前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas读取数据(2)

pandas读取数据(2)

作者头像
python数据可视化之路
发布2023-02-23 21:21:39
1K0
发布2023-02-23 21:21:39
举报

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档