一文看懂用Python读取Excel数据
導(dǎo)讀:現(xiàn)有的Excel分為兩種格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上)。
?
Python處理Excel文件主要是第三方模塊庫xlrd、xlwt、pyexcel-xls、xluntils和pyExcel-erator等,此外Pandas中也帶有可以讀取Excel文件的模塊(read_excel)。
?
基于擴(kuò)展知識的目的,本文使用xlrd模塊讀取Excel數(shù)據(jù)。
?
作者:宋天龍 來源:大數(shù)據(jù)DT(ID:bigdatadt)?
?
首先安裝該庫,Anaconda中已經(jīng)默認(rèn)安裝了xlrd和xlwt模塊,用于Excel的讀寫操作。如果讀者系統(tǒng)環(huán)境中沒有,可以在Jupyter輸入以下命令安裝。
?
!pip?install?xlrd?
然后我們以“附件-chapter2”文件夾中的demo.xlsx數(shù)據(jù)文件為例,介紹該庫的具體應(yīng)用。
?
附件下載地址:
http://www.dataivy.cn/book/python_book_v2.zip
?
數(shù)據(jù)概覽如圖所示。
?
▲數(shù)據(jù)文件內(nèi)容
?
import?xlrd??#?導(dǎo)入庫 #?打開文件 xlsx?=?xlrd.open_workbook('demo.xlsx') #?查看所有sheet列表 print('All?sheets:?%s'?%?xlsx.sheet_names())?
上述代碼中,我們先讀取一個(gè)Excel文件,輸出文件的sheet名稱列表。由于里面只有一張sheet,一次只有一個(gè)值。
?
結(jié)果為:
?
All?sheets:?['Sheet1']?
查看sheet1的數(shù)據(jù)概況:
?
sheet1?=?xlsx.sheets()[0]????#?獲得第1張sheet,索引從0開始 sheet1_name?=?sheet1.name????#?獲得名稱 sheet1_cols?=?sheet1.ncols???#?獲得列數(shù) sheet1_nrows?=?sheet1.nrows??#?獲得行數(shù) print('Sheet1?Name:?%s\nSheet1?cols:?%s\nSheet1?rows:?%s'?%?(sheet1_name,?sheet1_cols,?sheet1_nrows))?
我們分別獲取了第1張sheet(雖然里面只有一張,但在多sheet情況下可通過索引循環(huán)輸出)的名稱、列數(shù)量和行數(shù)據(jù)。結(jié)果如下:
?
Sheet1?Name:?sheet1 Sheet1?cols:?4 Sheet1?rows:?10?
查看sheet1的特定切片數(shù)據(jù):
?
sheet1_nrows4?=?sheet1.row_values(4)??#?獲得第4行數(shù)據(jù) sheet1_cols2?=?sheet1.col_values(2)???#?獲得第2列數(shù)據(jù) cell23?=?sheet1.row(2)[3].value???????#?查看第3行第4列數(shù)據(jù) print('Row?4:?%s\nCol?2:?%s\nCell?1:?%s\n'?%?(sheet1_nrows4,?sheet1_cols2,?cell23))?
通過查看特定行、列或行列組合的索引來輸出,結(jié)果如下:
?
Row?4:?['431381197408191515',?'有效',?42725.0,?'深圳市'] Col?2:?['Create_Time',?42725.0,?42725.0,?42725.0,?42725.0,?42725.0,?42725.0,?42725.0,?42725.0,?42725.0] Cell?1:?深圳市?
查看sheet1的數(shù)據(jù)明細(xì):
?
for?i?in?range(sheet1_nrows):??#?逐行打印sheet1數(shù)據(jù)print(sheet1.row_values(i))?
逐條輸出結(jié)果,部分結(jié)果如下(為了節(jié)約篇幅,中間的數(shù)據(jù)內(nèi)容以…代替):
?
['ID_number',?'Status',?'Create_Time',?'Business_City'] ['431381198109106573',?'有效',?42725.0,?'深圳市'] ['431381198809122734',?'有效',?42725.0,?'深圳市'] … ['431381198901176911',?'有效',?42725.0,?'深圳市'] ['43138119870827275X',?'有效',?42725.0,?'深圳市']?
上述操作只是將數(shù)據(jù)從Excel中讀取出來,將讀取的數(shù)據(jù)轉(zhuǎn)換為數(shù)組便可以進(jìn)行矩陣計(jì)算。由于矩陣計(jì)算大多是基于數(shù)值型數(shù)據(jù)實(shí)現(xiàn)的,因此上述數(shù)據(jù)將無法適用于大多數(shù)科學(xué)計(jì)算場景,這點(diǎn)需要注意。
?
總結(jié):在企業(yè)實(shí)際場景中,由于Excel本身的限制和適用,其無法存儲和計(jì)算過大(例如千萬級的數(shù)據(jù)記錄)的數(shù)據(jù)量,并且Excel本身也不是為了海量數(shù)據(jù)的應(yīng)用而產(chǎn)生的,因此,Excel可以作為日?;緮?shù)據(jù)處理、補(bǔ)充數(shù)據(jù)來源或者匯總級別的數(shù)據(jù)進(jìn)行讀取,同時(shí)也可以作為數(shù)據(jù)結(jié)果展示的載體,這種應(yīng)用下對于大量數(shù)值表格的應(yīng)用效果非常好。
?
關(guān)于作者:宋天龍,深大數(shù)據(jù)技術(shù)專家,觸脈咨詢合伙人兼副總裁,前Webtrekk中國區(qū)技術(shù)和咨詢負(fù)責(zé)人(德國最大在線數(shù)據(jù)分析服務(wù)提供商)。擅長數(shù)據(jù)挖掘、建模、分析與運(yùn)營,精通端到端數(shù)據(jù)價(jià)值場景設(shè)計(jì)、業(yè)務(wù)需求轉(zhuǎn)換、數(shù)據(jù)結(jié)構(gòu)梳理、數(shù)據(jù)建模與學(xué)習(xí)以及數(shù)據(jù)工程交付。在電子商務(wù)、零售、銀行、保險(xiǎn)等多個(gè)行業(yè)擁有豐富的數(shù)據(jù)項(xiàng)目工作經(jīng)驗(yàn)。
?
本文摘編自《Python數(shù)據(jù)分析與數(shù)據(jù)化運(yùn)營》(第2版),經(jīng)出版方授權(quán)發(fā)布。
?
延伸閱讀《Python數(shù)據(jù)分析與數(shù)據(jù)化運(yùn)營》 (第2版) 點(diǎn)擊上圖了解及購買 轉(zhuǎn)載請聯(lián)系微信:DoctorData?
推薦語:這是一本將數(shù)據(jù)分析技術(shù)與數(shù)據(jù)使用場景深度結(jié)合的著作,從實(shí)戰(zhàn)角度講解了如何利用Python進(jìn)行數(shù)據(jù)分析和數(shù)據(jù)化運(yùn)營。本書與同類書大的不同在于,并不只有純粹的關(guān)于數(shù)據(jù)分析技術(shù)和工具的講解,而且還與數(shù)據(jù)使用場景深度結(jié)合,在業(yè)務(wù)上真正可指導(dǎo)落地。此外,本書作者提供微信、郵箱等,可通過實(shí)時(shí)和離線兩種方式及時(shí)為讀者在線傳道、受業(yè)、解惑。
?
?
?
?
有話要說👇?
Q:?你打算去哪看看? 歡迎留言與大家分享?
猜你想看👇?
?
更多精彩👇?
在公眾號對話框輸入以下關(guān)鍵詞 查看更多優(yōu)質(zhì)內(nèi)容!?
PPT?|?報(bào)告?|?讀書?|?書單?|?干貨? 大數(shù)據(jù)?|?揭秘?|?Python?|?可視化 AI?|?人工智能?|?5G?|?中臺 機(jī)器學(xué)習(xí)?|?深度學(xué)習(xí)?|?神經(jīng)網(wǎng)絡(luò) 合伙人?|?1024?|?段子?|?數(shù)學(xué)?
總結(jié)
以上是生活随笔為你收集整理的一文看懂用Python读取Excel数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 他用科技复活传统艺术:发现甲骨文的终极浪
- 下一篇: TensorFlow和Keras入门必读