Python中處理表格數(shù)據(jù)的Tablib庫詳解
快速入門
Tablib 是一個(gè) MIT 許可的格式不可知的表格數(shù)據(jù)集庫,用 Python 編寫。它允許您導(dǎo)入、導(dǎo)出和操作表格數(shù)據(jù)集。
首先安裝第三方包pip install tablib
;pip3是因?yàn)殡娔X上安裝了python2.7版本
lifeng@apple ~ % pip3 install tablib Collecting tablib Using cached tablib-3.0.0-py3-none-any.whl (47 kB) Installing collected packages: tablib Successfully installed tablib-3.0.0
其次開始導(dǎo)入包,并創(chuàng)建對(duì)象,這個(gè)對(duì)象就是一個(gè)數(shù)據(jù)集,示例例如:
import tablib t = tablib.Dataset()
最后開始往里面添加數(shù)據(jù),示例如下:
- 添加行
import tablib t = tablib.Dataset() names = ["張三 50", "李四 20"] for name in names: n, s = name.split() t.append([n, s])
- 添加標(biāo)題
t.headers = ["姓名", "分?jǐn)?shù)"]
- 添加列
t.append_col([23, 24], "年齡")
合在一起運(yùn)行并展示結(jié)果,示例如下:
import tablib t = tablib.Dataset() names = ["張三 50", "李四 20"] for name in names: n, s = name.split() t.append([n, s]) t.headers = ["姓名", "分?jǐn)?shù)"] t.append_col([23, 24], "年齡") print(t.dict)
# 運(yùn)行結(jié)果
[OrderedDict([('姓名', '張三'), ('分?jǐn)?shù)', '50'), ('年齡', 23)]), OrderedDict([('姓名', '李四'), ('分?jǐn)?shù)', '20'), ('年齡', 24)])]
Process finished with exit code 0
從返回結(jié)果可以清晰看到,是OrderedDict類,它的作用就是按照元素初始添加順序進(jìn)行的…
導(dǎo)入數(shù)據(jù)
tablib.Dataset通過導(dǎo)入預(yù)先存在的文件來創(chuàng)建對(duì)象很簡(jiǎn)單。示例如下:
import tablib with open("data_list.xlsx", "rb") as r: data = tablib.Dataset().load(r) print(data) # 運(yùn)行結(jié)果 姓名|分?jǐn)?shù)|年齡 --|--|-- 張三|50|23 李四|20|24 Process finished with exit code 0
目前支持導(dǎo)入csv, tsv, dbf, xls, xlsx格式,這也是官網(wǎng)公布的,實(shí)操一下csv, tsv, dbf, xlsx是可行的。
導(dǎo)出數(shù)據(jù)
- 導(dǎo)出csv格式數(shù)據(jù)
print(t.export("csv")) # 運(yùn)行結(jié)果 姓名,分?jǐn)?shù),年齡 張三,50,23 李四,20,24 Process finished with exit code 0
- 導(dǎo)出json格式數(shù)據(jù)
print(t.export("json")) # 運(yùn)行結(jié)果 [{"姓名": "張三", "分?jǐn)?shù)": "50", "年齡": 23}, {"姓名": "李四", "分?jǐn)?shù)": "20", "年齡": 24}] Process finished with exit code 0
- 導(dǎo)出yaml格式數(shù)據(jù)
print(t.export("yaml")) # 運(yùn)行結(jié)果 - {分?jǐn)?shù): '50', 姓名: 張三, 年齡: 23} - {分?jǐn)?shù): '20', 姓名: 李四, 年齡: 24} Process finished with exit code 0
官方介紹還可以導(dǎo)出xls和pf格式,導(dǎo)入xls格式得安裝依賴包xlwt和xlrd;導(dǎo)出pf格式得安裝依賴包panads,如果不安裝第三方包去直接使用的話就會(huì)拋出錯(cuò)誤。
獲取和刪除
- 索引獲取、切片獲取和鍵獲取,示例如下:
# 索引獲取數(shù)據(jù) print(t[0]) # 切片獲取數(shù)據(jù) print(t[0:2]) # 獲取全部數(shù)據(jù) print(t.dict) # 鍵名獲取指定列 print(t["姓名"]) # 求平均年齡 print(sum(t["年齡"]) / len(t["年齡"]))
- 索引刪除、切片刪除和鍵刪除,示例如下:
# 索引刪除值 del t[0] # 切片刪除值 del t[0: 2] # 鍵名刪除指定列 del t["姓名"]
文件中寫入數(shù)據(jù)
import tablib # 準(zhǔn)備數(shù)據(jù) data_one = [ ('11/24/09', '張三', 56.), ('05/24/10', '李四', 62.) ] data_two = [ ('11/24/09', '王二二', 56.), ('05/24/10', '皮球球', 62.) ] # 創(chuàng)建對(duì)象 data = tablib.Dataset() data.headers = ['日期', '姓名', '分?jǐn)?shù)'] # 循環(huán)插入數(shù)據(jù) for row in data_one: data.append(row) # 循環(huán)插入數(shù)據(jù) for row in data_two: data.append(row) # 往文件中寫入數(shù)據(jù) with open('testing.xlsx', 'wb') as f: f.write(data.export('xlsx'))
這里的寫入文件不需要先創(chuàng)建好;它會(huì)自動(dòng)識(shí)別,不存在時(shí)會(huì)自動(dòng)創(chuàng)建,存在時(shí)就進(jìn)行覆蓋。運(yùn)行后完成后截圖如下:
到此這篇關(guān)于Python中處理表格數(shù)據(jù)的Tablib庫詳解的文章就介紹到這了,更多相關(guān)Python的Tablib庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Numpy之random函數(shù)使用學(xué)習(xí)
這篇文章主要介紹了Numpy之random使用學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Python 通過監(jiān)聽端口實(shí)現(xiàn)唯一腳本運(yùn)行方式
這篇文章主要介紹了Python 通過監(jiān)聽端口實(shí)現(xiàn)唯一腳本運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Django之Mode的外鍵自關(guān)聯(lián)和引用未定義的Model方法
今天小編就為大家分享一篇Django之Mode的外鍵自關(guān)聯(lián)和引用未定義的Model方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12利用python下載scihub成文獻(xiàn)為PDF操作
這篇文章主要介紹了利用python下載scihub成文獻(xiàn)為PDF操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07快速上手基于Anaconda搭建Django環(huán)境的教程
Django具有完整的封裝,開發(fā)者可以高效率的開發(fā)項(xiàng)目,Django將大部分的功能進(jìn)行了封裝,開發(fā)者只需要調(diào)用即可,接下來通過本文給大家介紹基于Anaconda搭建Django環(huán)境的教程,需要的朋友可以參考下2021-10-10