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
内容版权声明:除非注明,否则皆为本站原创文章。