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