使用pandas讀取excel


使用pandas讀取excel

Excel是微軟的經典之作,在這里我們介紹使用Python的pandas數據分析包來解決此問題。

pd.read_excel(io, sheet_name = 0, header = 0, names = None, index_col = None, usecols = None, squeeze = False, dtype = None, engine = None, converters = None, true_values = None, false_values = None, skiprows = None, nrows = None, na_values = None, parse_dates = False, date_parser = None, thousands = None, comment = None, skipfooter = 0, convert_float = True, **kwds)

pandas讀取Excel后返回DataFrame,接下來我們就pd.read_excel()的常用參數進行詳細解析。

目錄

1、io,Excel的存儲路徑

2、sheet_name,要讀取的工作表名稱

3、header, 用哪一行作列名

4、names, 自定義最終的列名

5、index_col, 用作索引的列

6、usecols,需要讀取哪些列

7、squeeze,當數據僅包含一列

8、converters ,強制規定列數據類型

9、skiprows,跳過特定行

10、nrows ,需要讀取的行數

11、skipfooter , 跳過末尾n行

 

【文中使用英超、西甲的排名積分榜及射手榜作為原始數據~~~】

1、io,Excel的存儲路徑

 建議使用英文路徑以及英文命名方式。
import pandas as pd
io = r'C:\Users\Administrator\Desktop\data.xlsx'


2、sheet_name,要讀取的工作表名稱

可以是整型數字、列表名或SheetN,也可以是上述三種組成的列表。
整型數字:目標sheet所在的位置,以0為起始,比如sheet_name = 1代表第2個工作表。

data = pd.read_excel(io, sheet_name = 1)
data.head()


列表名:目標sheet的名稱,中英文皆可。
data = pd.read_excel(io, sheet_name = '英超射手榜')
data.head()


SheetN:代表第N個sheet,S要大寫,注意與整型數字的區別。
data = pd.read_excel(io, sheet_name = 'Sheet5')
data.head()


組合列表: sheet_name = [0, '英超射手榜', 'Sheet4'],代表讀取三個工作表,分別為第1個工作表、名為“英超射手榜”的工作表和第4個工作表。顯然,Sheet4未經重命名。
sheet_name 默認為 0,取Excel第一個工作表。如果讀取多個工作表,則顯示表格的字典。對於初學者而言,建議每次讀取一個工作表,然后進行二次整合。
data = pd.read_excel(io, sheet_name = ['英超積分榜', '西甲積分榜'], nrows = 5)   # sheet_name = ['英超積分榜', '西甲積分榜'] ,返回兩個工作表組成的字典
data


3、header, 用哪一行作列名

 默認為0 ,如果設置為[0,1],則表示將前兩行作為多重索引。
data = pd.read_excel(io, sheet_name = '英超積分榜', header = [0,1])  # 前兩行作為列名。
data.head()


4、names, 自定義最終的列名

一般適用於Excel缺少列名,或者需要重新定義列名的情況。
注意:names的長度必須和Excel列長度一致,否則會報錯。
data = pd.read_excel(io, sheet_name = '英超射手榜',
names = ['rank','player','club','goal','common_goal','penalty'])
data.head()


5、index_col, 用作索引的列

可以是工作表列名稱,如index_col = '排名';
可以是整型或整型列表,如index_col = 0 或 [0, 1],如果選擇多個列,則返回多重索引。
data = pd.read_excel(io, sheet_name = '英超射手榜', index_col = '排名')
data.head()
 

data = pd.read_excel(io, sheet_name = '英超射手榜', index_col = [0, 1])
data.head()


6、usecols,需要讀取哪些列

可以使用整型,從0開始,如[0,2,3];
可以使用Excel傳統的列名“A”、“B”等字母,如“A:C, E” ="A, B, C, E",注意兩邊都包括。
usecols 可避免讀取全量數據,而是以分析需求為導向選擇特定數據,可以大幅提高效率。
data = pd.read_excel(io, sheet_name = '西甲射手榜', usecols = [0, 1, 3])
data.head()
 

data = pd.read_excel(io, sheet_name = '西甲射手榜', usecols = 'A:C, E')
data.head()   # 啊?什么!!為啥不見C羅?? # 大佬,C羅轉會去尤文圖斯啦~~~~
 

7、squeeze,當數據僅包含一列

 squeeze為True時,返回Series,反之返回DataFrame。
data = pd.read_excel(io, sheet_name = 'squeeze', squeeze = True)
data.head()


data = pd.read_excel(io, sheet_name = 'squeeze', squeeze = False)
data.head()


8、converters ,強制規定列數據類型

converters = {'排名': str, '場次': int}, 將“排名”列數據類型強制規定為字符串(pandas默認將文本類的數據讀取為整型),“場次”列強制規定為整型;

主要用途:保留以文本形式存儲的數字。

data = pd.read_excel(io, sheet_name = 'converters')
data['排名'].dtype
 

data = pd.read_excel(io, sheet_name = 'converters', converters = {'排名': str, '場次': float})
data['排名'].dtype

 

9、skiprows,跳過特定行

 skiprows= n, 跳過前n行; skiprows = [a, b, c],跳過第a+1,b+1,c+1行(索引從0開始);
使用skiprows 后,有可能首行(即列名)也會被跳過。
data = pd.read_excel(io, sheet_name = '英超射手榜', skiprows = [1,2,3])   # 跳過第2,3,4行數據(索引從0開始,包括列名)
data.head()
 

data = pd.read_excel(io, sheet_name = '英超射手榜', skiprows = 3)
data.head()
 

10、nrows ,需要讀取的行數

如果只想了解Excel的列名及概況,不必讀取全量數據,nrows會十分有用。 
data = pd.read_excel(io, sheet_name = '英超射手榜', nrows = 10)
data
 

11、skipfooter , 跳過末尾n行

data = pd.read_excel(r'C:\Users\Administrator\Desktop\data.xlsx' ,
sheet_name = '英超射手榜', skipfooter = 43)    # skipfooter = 43, 跳過末尾43行(索引從0開始)
data

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM