pandas读取数据(2)

2023-02-23 21:21:39 浏览数 (1)

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读取数据的方法至此结束,以后如有其它需求,会再次对读取数据这章内容进行更新。

0 人点赞