pandas操作excel(创建/读取文件)

时间:2024-03-13 18:10:22

本系列文章主要介绍利用python中的pandas工具包,实现excel的功能。目的是提高我们的数据处理的工作效率,实现重复性工作自动化的目标。各位看官可以作为参考。本问先介绍下pandas创建和读取excel文件的方法。

创建文件

现在我想要在桌面创建一个包含“ID”和“Name”两个字段,名为test.xlsx的excel文件,该如何操作呢?上代码:

import pandas as pd

df=pd.DataFrame({'ID':[1,2,3],'Name':['tom','sim','victor']})
df.to_excel(r'C:\Users\chih-cheng\Desktop\测试\test.xlsx')

print('done!')

结果如下:
pandas操作excel(创建/读取文件)
pandas操作excel(创建/读取文件)
可以看到成功创建一个test.xlsx文件,并在文件里添加了两个字段。

细心的同学可能发现了,文件里自动生成了一列索引,如果我们不想显示,就需要重新设置索引列,我们可以将’ID’字段设置为索引列,只需在上述代码中加入一行,利用.set_index方法:

df=pd.DataFrame({'ID':[1,2,3],'Name':['tom','sim','victor']})
df=df.set_index('ID',inpalce=True)
df.to_excel(r'C:\Users\chih-cheng\Desktop\测试\test.xlsx')

结果如下:
pandas操作excel(创建/读取文件)
成功将“ID”字段设置为索引列。

读取文件

现在我们要读取一个名为“测试.xlsx”的文件,数据结构如下截图:
pandas操作excel(创建/读取文件)
我们可以使用read_excel()方法,来看下代码如何实现:

df=pd.read_excel(r'C:\Users\chih-cheng\Desktop\测试\测试.xlsx')

print(df.shape)    #查看数据形状
print(df.columns)  #查看列字段名
print('---------')
print(df.head())   #查看前五行
print('---------')
print(df.tail())   #查看末尾五行

运行结果如下:
pandas操作excel(创建/读取文件)
可以看到,我们不仅可以读取文件,还可以使用一些pandas内置的方法来查看数据结构,读取的表格文件是一个20行,5列的数据格式,共有五个字段,名称如上图所示。

这就结束了吗?no,no,no,有很多时候,我们的数据源并不像我们想象中的那么“完美”,这些数据我们可以称为“脏数据”,在导入脏数据的时候,我们需要注意一些细节问题,有哪些脏数据呢,下面列举一些特殊情况,大家可以举一反三:

  • 首行有异常值
    如果有的表格文件的第一行不是正常的字段名,如下图,我们导入文件后,查看columns列索引的时候会发现,程序自动把第一行异常值作为字段名,因为程序默认的header是从0开始的:
    pandas操作excel(创建/读取文件)
    所以,我们只要在导入文件时,设置下header参数即可正常查看columns列:
df=pd.read_excel(r'C:\Users\chih-cheng\Desktop\测试\测试.xlsx',header=1)
  • 没有字段名的数据
    有的数据没有字段名称,直接是数据记录,如下:
    pandas操作excel(创建/读取文件)
    这时候读取文件,会自动把第一行作为column列的索引,解决办法是,首先我们将header参数设置为None,这样会自动生成一个从0开始的索引列,如下图:
    pandas操作excel(创建/读取文件)
    如果我们需要添加指定的字段名称,直接向columns参数传入列表元素,保存文件即可,代码如下:
df=pd.read_excel(r'C:\Users\chih-cheng\Desktop\测试\测试.xlsx',header=None)
df.columns=['ID','TYPE','FIRSTNAME','MIDDLENAME','LASTNAME']
print(df.columns)
df.to_excel(r'C:\Users\chih-cheng\Desktop\测试\测试.xlsx')

好啦,简单的创建读取文件其实也有很多门道,当然,本人水平有限,如有疏忽遗漏之处,感谢指正。下次会介绍pandas的更多功能。