python使用pandas模块操作excel

  • 2025-04-09 18:54:08
  • 开发
  • 58
  • shevechco

pandas是python中一个强大的数据处理和分析库,它提供了丰富的数据结构(如 Series 和 DataFrame)和数据操作方法,能够方便地处理各种数据格式,包括Excel文件。
我们之前操作excel用的是xlrd和xlwt两个模块,这次直接学习下使用pandas操作excel
这个模块使用之前我们需要先进行安装,同时我们还是需要openyxl模块,pandas模块操作excel还是会在内部调用这个模块

pip install pandas openpyxl

接着我们就来学习下如何是pandas操作excel
1.使用to_excel方法创建excel

import pandas as pd

data = {
    "ID": [1,2,3],
    "NAME": ["sulao", "merci", "shevechco"]
}
df = pd.DataFrame(data)
#使用set_index方法可以设置索引
df = df.set_index('ID')
excel_file = r'./dat.xlsx'
df.to_excel(excel_file)

打印如下结果

ID NAME
1 sulao
2 merci
3 shevechco

DataFrame实际就是一个二维数组,Series容器
如果不设置索引,那么excel会自动创建索引列,打印结果如下

ID NAME
0 1 sulao
1 2 merci
2 3 shevechco

如果想在单个excel创建多个工作表,参考以下实例

import pandas as pd

data = {
    "ID": [1,2,3],
    "NAME": ["sulao", "merci", "shevechco"]
}
data2 = {
    "CATE_ID": [6,7,8,9,10],
    "count": [100,111,222,333,4444]
}
df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
excel_file = r'./dat.xlsx'
with pd.ExcelWriter(excel_file) as write:
    df.to_excel(write, sheet_name="user", index=False)
    df2.to_excel(write, sheet_name="article", index=False)

2.使用read_excel方法读取excel

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file)
print(sheet)
sheet2 = pd.read_excel(excel_file, sheet_name="article")
print(sheet2)

使用sheet_name参数可以指定读取哪一个sheet,如果不写名字也可以写索引,例如sheet_name=0,那么就读取excel里面的第一个sheet
打印结果如下

ID NAME
0 1 sulao
1 2 merci
2 3 shevechco
CATE_ID count
0 6 100
1 7 111
2 8 222
3 9 333
4 10 4444

可以使用如下实例遍历所有sheet

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=None)
for d in sheet.keys():
    print(d)
#打印
user
article

另外pandas还可以处理缺失的值,可以使用sheet.fillna(value=0)方法来设置。
read_excel方法会自动判断数据类型,也可以手工指定数据类型,使用dtype参数来设置
使用header参数读取指定行,例如

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0)
print(sheet.columns)
#打印
Index(['ID', 'NAME'], dtype='object')

添加header参数,设置1那么将读取第二行

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0, header=1)
print(sheet.columns)
#打印
Index([1, 'sulao'], dtype='object')

使用skiprows参数跳过指定行

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0, skiprows=2)
print(sheet.columns)
#这样就会跳过前3行,打印如下
Index([2, 'merci'], dtype='object')

使用head和tail参数读取前后几行

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0)
print(sheet.head(2))
print(sheet.tail(2))

这样就是分别读取前三行和后三行
使用at方法读取指定单元格

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0, index_col=False)
for idx in sheet.index:
    print(idx, sheet["ID"].at[idx], sheet["NAME"].at[idx])
#打印
0 1 sulao
1 2 merci
2 3 shevechco

index_col参数是指定索引,这里设置False就是不指定索引
使用sort_values方法对数据进行排序

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0, index_col=False)
sheet.sort_values(by='ID', ascending=False, inplace=True)
print(sheet)
#打印如下
ID NAME
2 3 shevechco
1 2 merci
0 1 sulao

参数解释

by: 根据哪个字段进行排序
ascending: True是正序,False是倒序
inplace: 是否替换当前对象

同样也支持多个字段进行排序

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0, index_col=False)
sheet.sort_values(by=['NAME', 'ID'], ascending=[True, False], inplace=True)
print(sheet)

上述排序有两个字段NAME和ID,会先按NAME字段正序排列以后再按ID倒序
最后就是遍历sheet表的方法如下

import pandas as pd

excel_file = r'./dat.xlsx'
sheet = pd.read_excel(excel_file, sheet_name=0)
for idx_name, data in sheet.items():
    print(idx_name)
    print(data)
#打印
ID
0 1
1 2
2 3
Name: ID, dtype: int64
NAME
0 sulao
1 merci
2 shevechco
Name: NAME, dtype: object

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.sulao.cn/post/1023

相关推荐