0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Tablib:一個Python的第三方數(shù)據(jù)導出模塊

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

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

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

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

1.準備

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

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

當然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細指南。

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

pip install tablib

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

2.基本使用

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

創(chuàng)建Dataset對象

圖片

這樣相當于構(gòu)造了一張表:

first_namelast_name
JohnAdams
GeorgeWashington

其中最重要的就是Dataset對象,當然該對象的創(chuàng)建也可以不輸入參數(shù),直接

data = tablib.Dataset()

創(chuàng)建出一個Dataset對象,然后通過

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

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

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

來向表中添加一條記錄。

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

圖片

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

圖片

Dataset屬性

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

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

圖片

常用方法

詳情可見官方文檔:
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)根據(jù)列進行排序

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

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

新增列

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']

導入數(shù)據(jù)

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

導出數(shù)據(jù)

csv:

圖片

這樣便可成功將數(shù)據(jù)導出為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)

高級使用

動態(tài)列

可以將一個函數(shù)指定給Dataset對象

圖片

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

圖片

tag

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

圖片

3.舉個小例子

現(xiàn)在有一個場景,我們需要將一份股票數(shù)據(jù)csv文件轉(zhuǎn)化為json數(shù)據(jù):

圖片

你只需要這樣操作:

圖片

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

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

    關注

    7

    文章

    2714

    瀏覽量

    47509
  • 數(shù)據(jù)

    關注

    8

    文章

    7048

    瀏覽量

    89077
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84727
收藏 人收藏

    評論

    相關推薦

    Labview如何內(nèi)嵌操作第三方EXE程序!

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

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

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

    第三方dll調(diào)用問題?。?!

    第三方dll,沒有.h,labview怎么實現(xiàn)調(diào)用,dll可以用VS打開,類庫說明也有
    發(fā)表于 05-11 09:14

    LabVIEW與第三方軟件交互問題

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

    下載python第三方

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

    國內(nèi)知名第三方檢測認證機構(gòu)排名

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

    Detectron訓練第三方數(shù)據(jù)集測試

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

    Python入門之36常用第三方模塊獲取系統(tǒng)信息psutil

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

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

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

    頭文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方頭文件,但是頭文件(例如 hpp)中不包含該第三方文件頭,采用 PRIVATE。如果源文件和頭文件中都包含該第三方文件頭,采用 PUBLIC
    發(fā)表于 08-18 08:10

    銀行和第三方支付:戀愛進行時

    銀行和第三方支付:戀愛進行時   北京2010年1月8日電  -- 從第三方支付誕生之時起,銀行與第三方支付之間的競合關系
    發(fā)表于 01-09 08:08 ?667次閱讀

    第三方腳本成為網(wǎng)絡攻擊“重災區(qū)”,多管齊下防范第三方腳本安全隱患

      第三方腳本攻擊利用的是第一方網(wǎng)站對第三方腳本的控制力不足和難以實現(xiàn)的全面監(jiān)測,造成較為嚴重的攻擊后果。除此之外,第三方腳本還會帶來些其
    的頭像 發(fā)表于 09-04 14:51 ?3590次閱讀

    GeoPandas:針對地理數(shù)據(jù)做了特別支持的第三方模塊

    GeoPandas是基于pandas,針對地理數(shù)據(jù)做了特別支持的第三方模塊。 它繼承pandas.Series和pandas.Dataf
    的頭像 發(fā)表于 10-21 14:29 ?593次閱讀
    GeoPandas:針對地理<b class='flag-5'>數(shù)據(jù)</b>做了特別支持的<b class='flag-5'>第三方</b><b class='flag-5'>模塊</b>

    yfinance:獲取數(shù)據(jù)Python第三方模塊

    yfinance 是使用 Yahoo! 獲取數(shù)據(jù)Python 第三方模塊。它支持獲取最細
    的頭像 發(fā)表于 10-21 14:32 ?2873次閱讀

    python第三方庫有哪些

    Python 作為門功能強大的編程語言,擁有豐富的第三方庫,幾乎覆蓋了各個領域的應用。下面是些常見且廣泛應用的 Python
    的頭像 發(fā)表于 11-29 14:31 ?2144次閱讀