pandas创建及读取excel文件
创建文件
- 将DataFrame数据写入excel文件。
- 没有限制时,会自动添加index。
- 用字典创建时的key则自动为column。
- 如果想去掉自动生成的index,可以用set_index指定,但不会改变原df。如果想要改变,使用inplace参数。
import pandas as pd
file = r"D:\xlsx\test1.xlsx"
df1 = pd.DataFrame({"ID": ["a", "b", "c"], "name": ["Lucy", "Jim", "Lily"], "score": [70, 80, 90]})
print(df1)
df1.to_excel(file)
ID name score
0 a Lucy 70
1 b Jim 80
2 c Lily 90
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ialhr6fy-1661600614670)(attachment:image.png)]
df1 = df1.set_index("ID") #注意原df1不改变
print(df1)
name score
ID
a Lucy 70
b Jim 80
c Lily 90
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RaHVqYbh-1661600614673)(attachment:image.png)]
df1 = pd.DataFrame({"ID": ["a", "b", "c"], "name": ["Lucy", "Jim", "Lily"], "score": [70, 80, 90]})
df1.set_index("ID", inplace=True) #注意原df1改变
print(df1)
name score
ID
a Lucy 70
b Jim 80
c Lily 90
读取文件
- 当从excel读取文件时,也会自动在生成的数据上加index。
import pandas as pd
file_src = r"D:\xlsx\test1.xlsx"
file_dst = r"D:\xlsx\test2.xlsx"
df1 = pd.read_excel(file_src) #默认读出的数据会自动添加index, 会将首行数据作为column
print(df1)
ID name score
0 a Lucy 70
1 b Jim 80
2 c Lily 90
查看行列及前后几行
df1.head(2)
ID | name | score | |
---|---|---|---|
0 | a | Lucy | 70 |
1 | b | Jim | 80 |
df1.tail(2)
ID | name | score | |
---|---|---|---|
1 | b | Jim | 80 |
2 | c | Lily | 90 |
df1.shape
(3, 3)
数据header不是excel的第一行
- 使用header指定第几行,注意excel的第一行对应的header为0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BttICNzc-1661600614674)(attachment:image.png)]
df1 = pd.read_excel(file_src,header=1)
df1.columns
Index(['ID', 'name', 'score'], dtype='object')
数据无header
- 在读取时header指定为None,使用columns指定header
- 在读取时,使用names指定
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H4CSL6m2-1661600614675)(attachment:image.png)]
# 使用header和columns配合
df1 = pd.read_excel(file_src, header=None)
df1.columns = ["ID", "name", "score"]
df1.columns
Index(['ID', 'name', 'score'], dtype='object')
# 使用names指定
df1 = pd.read_excel(file_src, names=["ID", "name", "score"])
df1.columns
Index(['ID', 'name', 'score'], dtype='object')
读入数据时将index删除掉
- 使用index_col参数设置读入时的index
file_src = r"D:\xlsx\test2.xlsx"
df1 = pd.read_excel(file_src)
df1
ID | name | score | |
---|---|---|---|
0 | a | Lucy | 70 |
1 | b | Jim | 80 |
2 | c | Lily | 90 |
file_src = r"D:\xlsx\test2.xlsx"
file_dst = r"D:\xlsx\test3.xlsx"
df1 = pd.read_excel(file_src, index_col="ID")
print(df1)
df1.to_excel(file_dst)
name score
ID
a Lucy 70
b Jim 80
c Lily 90
读取指定的列
- 使用usecols指定,可以为数字或者字母,列表或者切片。
指定读取的行数
- nrows=数字
file_src = r"D:\xlsx\test2.xlsx"
df1 = pd.read_excel(file_src, nrows=2, index_col="ID")
print(df1)
name score
ID
a Lucy 70
b Jim 80
指定跳过的行
- skiprows=列表
file_src = r"D:\xlsx\test2.xlsx"
df1 = pd.read_excel(file_src, skiprows=[1,3], index_col="ID")
print(df1)
name score
ID
b Jim 80
参考
详细可参考 https://editor.youkuaiyun.com/md/?articleId=126057819