pandas读取Excel数据也是一个重要的功能,在现实的数据制图中经常使用;通过ExcelFile类或pandas.read_excel函数读取存储在Excel中的数据。这些工具是使用附加包xlrd和openpyxl来分别读取XLS和XLSX文件。
本次的测试数据如下:
读取Excel首先创建一个ExcelFile实例,将文件路径传入,获取实例后通过pandas.read_excel()读取,传入sheet_name来指定获取哪个表的数据;通过ExcelFile实例的sheet_names属性可以观察有哪些表。
代码语言:javascript复制import pandas as pd
xlsx = pd.ExcelFile(r"C:UsersASUSDesktoptest.xlsx")
data = pd.read_excel(xlsx, sheet_name = 'Sheet1') #获取Sheet1表的数据
print(xlsx.sheet_names) #ExcelFile对象有多少表
print(data)
-----结果-----
['Sheet1', 'Sheet2', 'Sheet3']
Unnamed: 0 Unnamed: 1 Unnamed: 2
0 A B C
1 93.8034 92.0801 96.899
2 49.2533 29.1845 77.0897
3 36.195 25.4436 87.2755
...
指定列名:通过传入header指定列名(表头)在哪一行;如果不传入header,则从有数据的地方开始读取;如果header值为None,则从第一行开始读取;也可以传入names参数自定义列名。
代码语言:javascript复制data1 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1) #将第1行作为列名
data2 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = None) #从头开始读取
data3 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1, names=['a1', 'a2', 'a3']) #自定义列名
-----结果-----
data1:
A B C
0 93.803414 92.080083 96.898993
1 49.253253 29.184524 77.089714
2 36.195012 25.443631 87.275454
...
data2:
0 1 2
0 NaN NaN NaN
1 A B C
2 93.8034 92.0801 96.899
3 49.2533 29.1845 77.0897
...
data3:
a1 a2 a3
0 93.803414 92.080083 96.898993
1 49.253253 29.184524 77.089714
2 36.195012 25.443631 87.275454
...
指定索引列:通过传入index_col="列名"指定索引列。
代码语言:javascript复制data = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1, names = ['a1', 'a2', 'a3'], index_col = 'a1') #a1列为索引列
-----结果-----
a2 a3
a1
93.803414 92.080083 96.898993
49.253253 29.184524 77.089714
36.195012 25.443631 87.275454
...
选择读取:读取前n行,利用head函数;跳过前n行,利用skiprows函数,跳过某几行,传入skiprows = [行1,行2]。
代码语言:javascript复制data1 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1, names = ['a1', 'a2', 'a3'], nrows = 3) #读取前3行
data2 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1, names = ['a1', 'a2', 'a3'], skiprows = 3) #跳过前3行
data3 = pd.read_excel(xlsx, sheet_name = 'Sheet1', header = 1, names = ['a1', 'a2', 'a3'], skiprows = [0, 2]) #跳过第1、3行
-----结果-----
data1:
a1 a2 a3
0 93.803414 92.080083 96.898993
1 49.253253 29.184524 77.089714
2 36.195012 25.443631 87.275454
data2:
a1 a2 a3
0 4.997839 2.279534 85.027745
1 45.041005 99.837243 97.373646
2 43.359789 99.609988 0.226430
...
data3:
a1 a2 a3
0 36.195012 25.443631 87.275454
1 4.997839 2.279534 85.027745
2 45.041005 99.837243 97.373646
...
读取某几列利用usecols函数,可是经过尝试并不可以;如果可以的话,欢迎在评论区讨论。
pandas输出成excel文件:
与pandas输出成txt文件一样,有index,header, columns等参数。这里有一个sheet_name参数,指定将数据输出到哪一个表。
代码语言:javascript复制data.to_excel(r"C:UsersASUSDesktoptest2.xlsx", sheet_name = '表2', index = False, header = True, columns = ['a2', 'a1', 'a3'])
总结:
pandas读取excel,新建一个ExcelFile实例,读取数据,常用参数:
(1)sheet_name:读取哪一个表的数据
(2)header:确定那一列为表头,不加该参数表示从有数据的地区读取
(3)index_col:读取索引列
(4)names:自定义列名
(5)head:读取前n行
(6)skiprows:跳过前n行,如果传入的是一个列表,则跳过列表的行
pandas输出excel:
(1)sheet_name:将数据输出到哪一个表
(2)index:是否输出索引,默认输出
(3)header:是否输出列名,默认输出
(4)columns:指定输出列的顺序
pandas读取txt和excel,读出来的数据属于DataFrame数据,读出来后,可以利用前一章的方法对DataFrame进行处理;常用的pandas读取数据的方法至此结束,以后如有其它需求,会再次对读取数据这章内容进行更新。