如何使用 Python 讀取 Excel 數(shù)據(jù)
使用 Python 讀取 Excel 數(shù)據(jù)的詳細(xì)教程
Python 提供了多種讀取 Excel 文件的方式,最常用的庫是 pandas
和 openpyxl
。下面我將詳細(xì)介紹如何使用這兩個(gè)庫來讀取 Excel 文件,并包含一些實(shí)用示例,幫助你撰寫博客。
1. 安裝必要的依賴
首先,需要確保安裝了 pandas
和 openpyxl
庫,這兩個(gè)庫可以幫助我們輕松讀取 Excel 文件。
你可以使用以下命令安裝它們:
pip install pandas openpyxl
pandas
:用于數(shù)據(jù)處理和分析,它內(nèi)置了讀取 Excel 文件的功能。openpyxl
:一個(gè)讀寫 Excel 2007 及以上版本的 Excel 文件的庫。
2. 讀取 Excel 文件
假設(shè)你有一個(gè) Excel 文件 data.xlsx
,包含如下數(shù)據(jù):
Name | Age | City |
---|---|---|
John | 25 | New York |
Alice | 30 | London |
Bob | 22 | Tokyo |
你可以使用 pandas
來讀取文件的內(nèi)容。
import pandas as pd # 讀取Excel文件 df = pd.read_excel('data.xlsx') # 顯示數(shù)據(jù) print(df)
輸出:
Name Age City
0 John 25 New York
1 Alice 30 London
2 Bob 22 Tokyo
3. 讀取特定的工作表
Excel 文件通常包含多個(gè)工作表??梢酝ㄟ^指定 sheet_name
來讀取特定的工作表。例如,假設(shè) data.xlsx
文件中有一個(gè)名為 Sheet2
的工作表:
df = pd.read_excel('data.xlsx', sheet_name='Sheet2') print(df)
你也可以通過索引來指定工作表:
df = pd.read_excel('data.xlsx', sheet_name=0) # 讀取第一個(gè)工作表
4. 讀取多張工作表
如果你想一次性讀取 Excel 文件中的所有工作表,可以使用 sheet_name=None
,它會(huì)返回一個(gè)包含多個(gè) DataFrame
的字典。
dfs = pd.read_excel('data.xlsx', sheet_name=None) # 遍歷所有工作表 for sheet, data in dfs.items(): print(f"工作表名: {sheet}") print(data)
5. 只讀取特定列
有時(shí),你只需要讀取 Excel 文件中的部分列??梢酝ㄟ^ usecols
參數(shù)指定需要讀取的列。
df = pd.read_excel('data.xlsx', usecols=['Name', 'City']) print(df)
輸出:
Name City
0 John New York
1 Alice London
2 Bob Tokyo
你也可以使用列的索引來讀取特定列,例如:
df = pd.read_excel('data.xlsx', usecols=[0, 2]) # 讀取第一和第三列 print(df)
6. 處理缺失數(shù)據(jù)
在讀取 Excel 數(shù)據(jù)時(shí),可能會(huì)遇到空白單元格。你可以使用 pandas
處理這些缺失數(shù)據(jù)。例如,可以通過 na_values
參數(shù)將特定的值識(shí)別為 NaN
,或者使用 fillna()
方法填充缺失值。
# 將特定值識(shí)別為NaN df = pd.read_excel('data.xlsx', na_values=['N/A', 'NA']) # 填充缺失數(shù)據(jù) df.fillna(value={'Age': 0, 'City': 'Unknown'}, inplace=True) print(df)
7. 將 Excel 數(shù)據(jù)轉(zhuǎn)換為其他格式
有時(shí)你可能需要將讀取的 Excel 數(shù)據(jù)保存為其他格式,例如 CSV 文件或 JSON 文件。pandas
允許你輕松實(shí)現(xiàn)這一點(diǎn)。
# 保存為CSV文件 df.to_csv('data.csv', index=False) # 保存為JSON文件 df.to_json('data.json', orient='records')
8. 讀取大文件和優(yōu)化性能
如果 Excel 文件非常大,可能會(huì)導(dǎo)致內(nèi)存不足或讀取速度較慢。pandas
提供了一些方法來優(yōu)化性能,例如使用 chunksize
分塊讀取數(shù)據(jù)。
# 分塊讀取Excel文件,每次讀取100行 chunks = pd.read_excel('large_data.xlsx', chunksize=100) for chunk in chunks: print(chunk)
9. 使用 openpyxl 讀取 Excel
openpyxl
更適合需要對(duì) Excel 文件進(jìn)行更底層操作的場(chǎng)景,如讀取和修改單元格樣式、公式等。以下是一個(gè)簡(jiǎn)單的讀取示例:
from openpyxl import load_workbook # 加載Excel工作簿 wb = load_workbook('data.xlsx') # 選擇工作表 sheet = wb['Sheet1'] # 讀取指定單元格的值 for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, values_only=True): print(row)
10. 更多的 Excel 讀取功能
你可以使用 pandas
提供的更多選項(xiàng),例如:
skiprows
: 跳過特定行數(shù)nrows
: 讀取指定行數(shù)header
: 設(shè)置自定義標(biāo)題行
# 跳過前兩行并讀取5行數(shù)據(jù) df = pd.read_excel('data.xlsx', skiprows=2, nrows=5) print(df)
總結(jié)
通過 pandas
和 openpyxl
,你可以輕松讀取 Excel 文件,并進(jìn)行各種數(shù)據(jù)處理操作。pandas
更適合快速、簡(jiǎn)單的數(shù)據(jù)分析,而 openpyxl
則適合需要對(duì) Excel 文件進(jìn)行更深入控制的場(chǎng)景。
到此這篇關(guān)于使用 Python 讀取 Excel 數(shù)據(jù)的詳細(xì)教程的文章就介紹到這了,更多相關(guān) Python 讀取 Excel 數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python讀取Excel數(shù)據(jù)在PPT中創(chuàng)建圖表
- python使用openpyxl庫讀取Excel文件數(shù)據(jù)
- Python如何按單元格讀取復(fù)雜電子表格(Excel)的數(shù)據(jù)
- Python讀取excel文件中的數(shù)據(jù),繪制折線圖及散點(diǎn)圖
- 使用python的pandas讀取excel文件中的數(shù)據(jù)詳情
- Python讀取Excel數(shù)據(jù)實(shí)現(xiàn)批量生成PPT
- 詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫入
- python?pandas庫讀取excel/csv中指定行或列數(shù)據(jù)
- Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
相關(guān)文章
實(shí)例講解Python中函數(shù)的調(diào)用與定義
這篇文章主要介紹了Python中函數(shù)的調(diào)用與定義,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-03-03python中ImageTk.PhotoImage()不顯示圖片卻不報(bào)錯(cuò)問題解決
這篇文章主要給大家介紹了關(guān)于在python中ImageTk.PhotoImage()不顯示圖片卻不報(bào)錯(cuò)問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12詳解安裝mitmproxy以及遇到的坑和簡(jiǎn)單用法
mitmproxy 是一款工具,也可以說是 python 的一個(gè)包,在命令行操作的工具。這篇文章主要介紹了詳解安裝mitmproxy以及遇到的坑和簡(jiǎn)單用法,感興趣的小伙伴們可以參考一下2019-01-01Python爬取APP下載鏈接的實(shí)現(xiàn)方法
這篇文章主要實(shí)現(xiàn)的是批量下載安卓APP。顯然用手點(diǎn)是不科學(xué)的。于是嘗試用Python寫了一個(gè)半自動(dòng)化的腳本。所謂半自動(dòng)化,就是把下載鏈接批量抓取下來,然后一起貼到迅雷里進(jìn)行下載,這樣可以快速批量下載。有需要的朋友們可以一起看看吧。2016-09-09使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程
今天小編就為大家分享一篇使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Matplotlib實(shí)戰(zhàn)之柱狀圖繪制詳解
柱狀圖,是一種使用矩形條,對(duì)不同類別進(jìn)行數(shù)值比較的統(tǒng)計(jì)圖表,這篇文章主要為大家詳細(xì)介紹了如何使用Matplotlib繪制柱狀圖,需要的可以參考下2023-08-08pytorch:model.train和model.eval用法及區(qū)別詳解
今天小編就為大家分享一篇pytorch:model.train和model.eval用法及區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02python socket發(fā)送TCP數(shù)據(jù)方式
這篇文章主要介紹了python socket發(fā)送TCP數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Python filter過濾器原理及實(shí)例應(yīng)用
這篇文章主要介紹了Python filter過濾器原理及實(shí)例應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08