<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Tablib:一個Python的第三方數據導出模塊

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 15:57 ? 次閱讀

Tablib是一個Python的第三方數據導出模塊,它支持以下文件格式的導出:

  • Excel
  • JSON
  • YAML
  • Pandas DataFrames
  • HTML
  • Jira
  • TSV
  • ODS
  • CSV
  • DBF

其實這個工具能做到的東西,Pandas都能做到,但是有時候Pandas實在是過重了,如果我們只想實現輕量數據的導出,而非上千萬級別的數據導出,該工具更能體現它的優勢。

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。

Windows環境下打開Cmd(開始—運行—CMD),蘋果系統環境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。

當然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端裝依賴模塊,多舒服的一件事?。?a href="http://www.qd573.com/outside?redirect=http://mp.weixin.qq.com/s?__biz=MzI3MzM0ODU4Mg==&mid=2247485849&idx=1&sn=ec098cf67a55bd1d61d4513397434c94&chksm=eb25eb10dc52620682db716d206c18b00bd53c01743729a9dea381e1791566a04a06f1fabca5&scene=21#wechat_redirect" target="_blank">Python 編程的最好搭檔—VSCode 詳細指南。

在終端輸入以下命令安裝我們所需要的依賴模塊:

pip install tablib

看到 Successfully installed xxx 則說明安裝成功。

2.基本使用

這一塊,官方文檔已經有詳細介紹,這里轉載自xin053的翻譯與介紹,有部分修改:
https://xin053.github.io/2016/07/10/tablib%E5%BA%93%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/

創建Dataset對象

圖片

這樣相當于構造了一張表:

first_namelast_name
JohnAdams
GeorgeWashington

其中最重要的就是Dataset對象,當然該對象的創建也可以不輸入參數,直接

data = tablib.Dataset()

創建出一個Dataset對象,然后通過

data.headers = ['first_name', 'last_name']

設置表頭,當然也可以使用 data.headers = ('first_name', 'last_name'), 因為不管是用列表還是元組,tablib都會自動幫我們處理好,我們可以通過

data.append(['Henry', 'Ford'])
# 或data.append(('Henry', 'Ford'))

來向表中添加一條記錄。

我們可以通過data.dict來查看目前表中的所有數據:

圖片

也可以通過print(data)顯示更人性化的輸出:

圖片

Dataset屬性

data.height輸出當前記錄(行)總數

data.width輸出當前屬性(列)總數

圖片

常用方法

詳情可見官方文檔:
https://tablib.readthedocs.io/en/stable/api/#tablib.Dataset.remove_duplicates

lpop(), lpush(row, tags=[]), lpush_col(col, header=None)是對列的相關操作

pop(), rpop(), rpush(row, tags=[]), rpush_col(col, header=None)是對行的相關操作

remove_duplicates()去除重復的記錄

sort(col, reverse=False)根據列進行排序

subset(rows=None, cols=None)返回子Dataset

wipe()清空Dataset,包括表頭和內容

新增列

data.append_col((90, 67, 83), header='age')

這樣表就變成了:

first_namelast_nameage
JohnAdams90
GeorgeWashington67
HenryFord83

圖片

對記錄操作

> >> print(data[:2])
[('John', 'Adams', 90), ('George', 'Washington', 67)]
> >> print(data[2:])
[('Henry', 'Ford', 83)]

對屬性操作

圖片

刪除記錄

圖片

可見記錄也是從0開始索引

刪除記錄操作也支持切片, 即 del data[1:999] 也是可行的

刪除屬性

del data['Col Name']

導入數據

imported_data = tablib.Dataset().load(open('data.csv').read())

導出數據

csv:

圖片

這樣便可成功將數據導出為csv文件。

json:

圖片

yaml:

圖片

excel:

>> > with open('people.xls', 'wb') as f:
...     f.write(data.xls)

注意要以二進制形式打開文件

dbf:

>> > with open('people.dbf', 'wb') as f:
...     f.write(data.dbf)

高級使用

動態列

可以將一個函數指定給Dataset對象

圖片

函數的參數row傳入的是每一行記錄,所以可以根據傳入的記錄進行更一步的計算:

圖片

tag

可以給記錄添加tag,之后通過tag來過濾記錄:

圖片

3.舉個小例子

現在有一個場景,我們需要將一份股票數據csv文件轉化為json數據:

圖片

你只需要這樣操作:

圖片

即可將其轉化為json格式,顯然,它的特點在于輕量、簡單。如果用Pandas來做這樣的轉化,則有些大材小用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2520

    瀏覽量

    46712
  • 數據
    +關注

    關注

    8

    文章

    6542

    瀏覽量

    87806
  • python
    +關注

    關注

    52

    文章

    4698

    瀏覽量

    83610
收藏 人收藏

    評論

    相關推薦

    Labview如何內嵌操作第三方EXE程序!

    自己在網上搜了下相關資料,能把第三方EXE內嵌進入容器里,但是有問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現嗎? 下圖是我內嵌的POLL 軟件。如圖!
    發表于 04-18 14:26

    如何打開第三方軟件

    請問大神們 誰知道如何在Labview中 打開第三方軟件,我現在想打開工程后 自動打開USB視頻采集卡,然后就直接顯示出采集卡采集到的圖像了請問如何打開在這先謝過了
    發表于 09-11 16:26

    如何把第三方庫加到PROTEUS中?

    新手求教,弱弱的問下,下了第三方庫,說是要先安裝,再添加路徑,可是我下來的第三方庫沒有看到安裝文件啊。還望指教如何添加!
    發表于 06-15 22:32

    求教添加第三方元件的問題

    新手正在做畢業設計,基于PID的交流電機變頻調速,目前缺少SA4828等元件,自己還不會添加,論壇中的第三方元件庫確實不少,然而我的積分不多.......有木有人能告訴我哪些元件庫有我需要的這些元件?或者哪個比較全可能含有?
    發表于 06-15 09:29

    快點PCB原創∣簡述PCB設計中第三方網表的導入

    .第三方網表的導出 點擊后(生成的netlist就是第三方網表,第三方網表的格式有.txt .tel等多種格式,但都能用記事本打開) 點
    發表于 09-14 10:32

    簡述PCB設計中第三方網表的導入

    .第三方網表的導出 點擊后(生成的netlist就是第三方網表,第三方網表的格式有.txt .tel等多種格式,但都能用記事本打開) 點
    發表于 09-16 16:16

    第三方dll調用問題?。?!

    第三方dll,沒有.h,labview怎么實現調用,dll可以用VS打開,類庫說明也有
    發表于 05-11 09:14

    LabVIEW與第三方軟件交互問題

    現在做一個軟件,就是通過LabVIEW去與第三方軟件進行交互操作!已經通過百度找到了利用user32.dll調用FindWindowA與PostMessage去實現對計算器,找了多方資料也沒有找到解決辦法。想做一個軟件就是對圖片
    發表于 12-26 17:13

    下載python第三方

    python第三方庫的下載
    發表于 07-02 13:12

    國內知名第三方檢測認證機構排名

    的檢測機構介入,成熟的第三方檢測機構介入商品檢測在十九世紀中葉已經很普遍了,并成為種自覺的商業行為。目前中國已經成為了全球貿易大國,經濟實力躍居世界第二,強勁的對外貿易增長態勢促進了檢測行業的不斷
    發表于 07-19 16:57

    Detectron訓練第三方數據集測試

    從零開始使用Detectron訓練第三方數據集是什么體驗(六)
    發表于 04-14 11:44

    Python入門之36常用第三方模塊獲取系統信息psutil

    Python入門】36常用第三方模塊之 獲取系統信息psutil
    發表于 07-16 06:31

    關于LabVIEW調用第三方exe,如何去控制第三方exe按鈕的問題

    我想調用第三方的exe,但并沒有給出任何接口,就單單exe程序,通過查資料得出可以用window自帶的user32.dll可以控制第三方的軟件,通過FindWindowA函數找到該
    發表于 08-12 16:37

    請問第三方平臺授權如何實現?

    第三方平臺授權如何實現
    發表于 11-10 07:27

    頭文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方頭文件,但是頭文件(例如 hpp)中不包含該第三方文件頭,采用 PRIVATE。如果源文件和頭文件中都包含該第三方文件頭,采用 PUBLIC
    發表于 08-18 08:10
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>