pandas如何正确的读取一个已经存在的excel文件呢?
首先先有一个可读取的文件
import pandas as pd
save_path = r'D:/temp/raw.xlsx'
df = pd.DateFrame({
'id':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'name': ['赤', '橙', '黄', '绿', '蓝', '黄花花', '瘦虎', '鸭蛋', '狗剩', '小灰灰'],
'score': [50, 23, 89, 51, 46, 78, 95, 20, 45, 67]
})
# 保存文件
df.to_excel(save_path)
print('succeed!')
执行成功后,temp文件夹下的raw.xlsx文件内容如下:
读取文件
下面我们就在pandas中读取这个文件
import pandas as pd
file_path = r'D:/temp/raw.xlsx'
# 读取文件
df = pd.read_excel(file_path)
print(df)
执行结果如下:
一般的excel表格不会只有这么一点内容,所以不能直接这样全部打印出来。
- 显示文件中有多少行,多少列。
df.shape
属性显示文件行列
- 显示列名。
df.columns
pandas默认的是用文件的第一行作为文件的列名,如果第一行是空白的话,会自动选择往下不为空的第一行做为列名。但是遇到文件第一行不能做列名,但也不为空怎么办呢?
列如生成raw.xlsx文件副本(raw(2).xlsx):
这时得到文件的行和列
当第一行不为空的时候
这时就需要指定哪一行为列名
import pandas as pd
file_path = r'D:/temp/raw(2).xlsx'
# pandas下标从0开始,设置header为3指定第四行为列名
df = pd.read_excel(file_path,header=3)
print(df.columns)
- 自定义列名
当表格中没有列名,而自己知道列名的时候就需要在pandas里面给它加上列名
# 标注列名为空
df = pd.read_excel(file_path,header=None)
# 为文件指定列名
df.columns = ['id', 'name', 'age']
# 指定id为索引列
df.set_index('id', inplace=True)
# 保存文件后就能为没有列名的文件在第一行加上列名了
df.to_excel(file_path)
- 显示前几行或后几行
# 显示前3行,不加参数默认前5行
print(df.head(3))
print('===============')
# 显示末3行,不加参数默认后5行
print(df.tail(3))
- 指明索引列
每次读取文件的时候它都会自动生成一个索引列,可以在读取的时候加一个参数指明那一列为索引。
df = df = pd.read_excel(file_path, index_col='id')