Python表格數(shù)據(jù)處理庫(kù)之tablib庫(kù)詳解
Tablib庫(kù)
Tablib是一個(gè)用于處理電子表格數(shù)據(jù)的Python庫(kù),它可以輕松地進(jìn)行數(shù)據(jù)的導(dǎo)入和導(dǎo)出,以及數(shù)據(jù)格式的轉(zhuǎn)換。
本文將詳細(xì)介紹Tablib庫(kù)的各種用法和示例,包括如何從不同的數(shù)據(jù)源導(dǎo)入數(shù)據(jù)、如何對(duì)數(shù)據(jù)進(jìn)行加工處理以及如何將數(shù)據(jù)導(dǎo)出到不同的格式。
一、安裝及基礎(chǔ)知識(shí)介紹
安裝Tablib非常簡(jiǎn)單,只需要使用pip命令即可完成安裝。在終端中輸入以下命令即可開(kāi)始安裝:
pip install tablib
Tablib最基礎(chǔ)的數(shù)據(jù)類型是Dataset。它由行和列構(gòu)成,可理解為一個(gè)二維數(shù)組,每個(gè)元素可以是任意的Python對(duì)象。Dataset可以定義列和行的名稱,在數(shù)據(jù)導(dǎo)出時(shí)也會(huì)體現(xiàn)出來(lái)。
二、從不同的數(shù)據(jù)源導(dǎo)入數(shù)據(jù)
1.從csv文件中導(dǎo)入數(shù)據(jù)
使用Tablib導(dǎo)入csv文件非常容易,只需要使用Tablib內(nèi)置的Dataset方法即可實(shí)現(xiàn)。
在下面的代碼中,我們將會(huì)導(dǎo)入一個(gè)名為“example.csv”的csv文件,并轉(zhuǎn)換為Tablib的Dataset格式。
import tablib data = tablib.Dataset().load(open('example.csv').read())
2.從Excel文件中導(dǎo)入數(shù)據(jù)
Tablib同樣支持從Excel文件中導(dǎo)入數(shù)據(jù),可以使用xlrd庫(kù)來(lái)讀取Excel文件。
在下面的代碼中,我們將會(huì)導(dǎo)入一個(gè)名為“example.xlsx”的Excel文件,并轉(zhuǎn)換為Tablib的Dataset格式。
import xlrd import tablib data = tablib.Dataset().load(open('example.xlsx').read(), format='xls')
3.從json文件中導(dǎo)入數(shù)據(jù)
導(dǎo)入json文件也非常容易,只需要使用Tablib內(nèi)置的Dataset方法即可實(shí)現(xiàn)。
在下面的代碼中,我們將會(huì)導(dǎo)入一個(gè)名為“example.json”的json文件,并轉(zhuǎn)換為Tablib的Dataset格式。
import tablib import json data = tablib.Dataset().load(json.load(open('example.json')))
三、對(duì)數(shù)據(jù)進(jìn)行加工處理
1.添加列和行
在Tablib中,添加列和行非常方便。對(duì)于列的添加,我們只需要在Dataset中使用add_column()方法。而對(duì)于行的添加,我們可以使用Dataset的append()方法,通過(guò)列表的形式添加具體的數(shù)據(jù)。
import tablib data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age')
2.刪除列和行
刪除列和行同樣很容易,我們只需要使用Dataset的某些方法來(lái)刪除指定列或行。在下面的代碼中,我們演示了如何刪除名為“age”的列以及第二行數(shù)據(jù)。
import tablib data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') data.remove_column('age') data.pop(2)
3.重命名列
在Tablib中,重命名列也非常容易,只需要使用Dataset的rename()方法即可。
import tablib data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') data.rename('name', 'username')
4.指定列的數(shù)據(jù)類型
在導(dǎo)入數(shù)據(jù)時(shí),Tablib默認(rèn)將所有的數(shù)據(jù)均作為字符串進(jìn)行處理。
如果想要在Tablib中處理數(shù)值類型數(shù)據(jù),可以通過(guò)指定列的數(shù)據(jù)類型來(lái)實(shí)現(xiàn)。
import tablib data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column([27, 25, 28], header='age', type='numeric')
四、將數(shù)據(jù)導(dǎo)出到不同的格式
1.導(dǎo)出為csv文件
將數(shù)據(jù)導(dǎo)出為csv文件也非常方便,只需要使用Tablib內(nèi)置的csv格式即可。
在下面的代碼中,我們將會(huì)使用Tablib將數(shù)據(jù)導(dǎo)出為“example.csv”的csv文件。
import tablib data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') with open('example.csv', 'w') as f: f.write(data.csv)
2.導(dǎo)出為Excel文件
導(dǎo)出為Excel文件同樣容易,只需要使用Tablib內(nèi)置的xls格式,并使用xlwt庫(kù)將數(shù)據(jù)導(dǎo)出為Excel文件即可。
import tablib import xlwt data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1') for idx, row in enumerate(data): for colidx, value in enumerate(row): sheet.write(idx, colidx, value) book.save('example.xls')
3.導(dǎo)出為json文件
將數(shù)據(jù)導(dǎo)出為json文件也非常容易,只需要使用Tablib內(nèi)置的json格式即可。
import tablib import json data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') with open('example.json', 'w') as f: f.write(json.dumps(data.json))
4.導(dǎo)出為其他格式
Tablib還支持導(dǎo)出為其他格式,包括YAML格式、HTML格式甚至Markdown格式等。
在導(dǎo)出其他格式時(shí),需要先安裝對(duì)應(yīng)的依賴庫(kù)。
import tablib import yaml import markdown data = tablib.Dataset() data.headers = ['name', 'age'] data.add_column(['Tom', 'Ali', 'Mike'], header='name') data.add_column(['27', '25', '28'], header='age') #導(dǎo)出為YAML格式 with open('example.yml', 'w') as f: f.write(yaml.dump(data.yaml)) #導(dǎo)出為HTML格式 html = '<table>{}</table>'.format(data.html) with open('example.html', 'w') as f: f.write(html) #導(dǎo)出為Markdown格式 md = markdown.markdown(data.markdown) with open('example.md', 'w') as f: f.write(md)
總結(jié):
本文介紹了Tablib庫(kù)的各種用法和示例,包括從不同數(shù)據(jù)源導(dǎo)入數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行加工處理以及將數(shù)據(jù)導(dǎo)出到不同格式的文件中。
其中,Tablib庫(kù)具有良好的易用性和靈活性,可以幫助我們更高效地處理表格數(shù)據(jù)。
到此這篇關(guān)于Python表格數(shù)據(jù)處理庫(kù)之tablib庫(kù)詳解的文章就介紹到這了,更多相關(guān)Python表格數(shù)據(jù)tablib內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架Jinjia模板常用語(yǔ)法總結(jié)
這篇文章主要介紹了Flask框架Jinjia模板常用語(yǔ)法,結(jié)合實(shí)例形式總結(jié)分析了Jinjia模板的變量、賦值、流程控制、函數(shù)、塊、宏等基本使用方法,需要的朋友可以參考下2018-07-07Python使用conda如何安裝requirement.txt的擴(kuò)展包
這篇文章主要介紹了Python使用conda如何安裝requirement.txt的擴(kuò)展包問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法
今天小編就為大家分享一篇python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python中的裝飾器鏈(decorator chain)詳解
在Python中,裝飾器是一種高級(jí)功能,它允許你在不修改函數(shù)或類代碼的情況下,為它們添加額外的功能,裝飾器通常用于日志記錄、性能測(cè)量、權(quán)限檢查等場(chǎng)景,當(dāng)多個(gè)裝飾器應(yīng)用于同一個(gè)函數(shù)或類時(shí),形成裝飾器鏈,這篇文章主要介紹了Python中的裝飾器鏈詳解,需要的朋友可以參考下2024-06-06Python+pytorch實(shí)現(xiàn)天氣識(shí)別
這篇文章主要為大家詳細(xì)介紹了如何利用Python+pytorch實(shí)現(xiàn)天氣識(shí)別功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-10-10python使用socket實(shí)現(xiàn)圖像傳輸功能
這篇文章主要為大家詳細(xì)介紹了python使用socket實(shí)現(xiàn)圖像傳輸功能,linux服務(wù)器與win10主機(jī)間的圖像傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Python使用pymongo庫(kù)操作MongoDB數(shù)據(jù)庫(kù)的方法實(shí)例
今天小編就為大家分享一篇關(guān)于Python使用pymongo庫(kù)操作MongoDB數(shù)據(jù)庫(kù)的方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Python自動(dòng)化辦公之圖片轉(zhuǎn)PDF的實(shí)現(xiàn)
實(shí)現(xiàn)圖片轉(zhuǎn)換成PDF文檔的操作方法有很多,綜合對(duì)比以后感覺(jué)fpdf這個(gè)模塊用起來(lái)比較方便而且代碼量相當(dāng)少。所以本文將利用Python語(yǔ)言實(shí)現(xiàn)圖片轉(zhuǎn)PDF,感興趣的可以了解一下2022-04-04Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐
本文主要介紹了Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08