Hi~大家好,又到Python偷懒时刻。
今天讲解的是如何利用Python来按需求批量提取EXCEL表格数据,然后进行保存。在用excel进行工作时,这样的操作在日常办公中是经常会用到,而用Python实现将会大大提高工作效率!
本文新建了一个excel文件让案例更具有普遍性,文件共有十二个工作表,包括12个月的销售记录:
需求如下:
- 提取表格中名为锋小刀的销售员的销售记录
- 提取表格中销售额超过2000的销售记录
- 提取表格中名为锋小刀的销售员且销售额超过2000的销售记录
- 筛选除锋小刀的销售记录
- 计算各个销售员的销售总额
- 取出每个月1号的销售记录
- 按以上需求为名称重命名工作表名称
- 按原工作簿中的工作表名称+总表.xslx保存为多个excel文件
简单的说就是创建12个excel工作簿,工作簿中包含6个需求为名称的工作表,工作表里面保存着需求数据。
import pandas
我们需要先读取工作簿中的所有工作表,然后再进行一个一个工作表的数据提取,这里 sheet_name=None
不指定工作表,利用循环遍历 df_name.keys()
取出所有工作表名称,然后把工作表名称放入df中的sheet_name
,一个一个的打开工作表:
df_name = pd.read_excel('2021年销售员销售记录.xlsx', sheet_name=None)
for i in df_name.keys():
df = pd.read_excel('2021年销售员销售记录.xlsx', sheet_name=i)
提取表格中名为锋小刀的销售员的销售记录,只要 销售员列
出现锋小刀
的销售员就提取出来:
df1 = df[df['销售员'] == '锋小刀']
df1 = df1.reset_index(drop=True) # 重置索引
df1.head()
提取表格中销售额超过2000的销售记录:
df2 = df[df['销售额'] > 2000]
df2 = df2.reset_index(drop=True)
df2.head()
提取表格中名为锋小刀的销售员且销售额超过2000的销售记录,该需求是双重条件,所以这里用符号 &
进行连接:
df3 = df[(df['销售员'] == '锋小刀') & (df['销售额'] > 2000)]
df3 = df3.reset_index(drop=True)
df3.head()
筛选除锋小刀的销售记录:
df4 = df[(df['销售员'] != '锋小刀')]
df.sample(10)
计算各个销售员的销售总额,这里用 groupby()
按销售员进行分组以及sum()
进行分组求和计算:
df5 = df.groupby(by='销售员')['销售额'].sum()
取出每个月1号的销售记录,这里先将销售日期列转换为字符串数据类型,然后用contains()
函数以及正则表达式
进行筛选:
df['销售日期'] = df['销售日期'].values.astype('str')
df6 = df.销售日期.str.contains('.*-.*-01')
df6 = df[df6]
用pd.ExcelWriter()
创建工作簿,以工作表名称+总表.xlsx
为名称进行保存:
excel_name = pd.ExcelWriter(f'{i}总表.xlsx')
用with
循环进行不断创建工作簿,然后保存工作簿并修改工作表名称以及索引:
with pd.ExcelWriter(excel_name) as writer:
df1.to_excel(excel_writer=writer, sheet_name='锋小刀的销售记录', index_label='序号')
df2.to_excel(excel_writer=writer, sheet_name='销售额超过2000的销售记录', index_label='序号')
df3.to_excel(excel_writer=writer, sheet_name='锋小刀销售额超过2000的销售记录', index_label='序号')
df4.to_excel(excel_writer=writer, sheet_name='筛选除锋小刀的销售记录', index_label='序号')
df5.to_excel(excel_writer=writer, sheet_name='各个销售员的销售额', index_label='销售员')
df6.to_excel(excel_writer=writer, sheet_name='1号销售记录', index_label='序号')
运行效果:
代码不多,也简单,运行只需要几秒钟就可以搞定了!
本文分享自 Python与Excel之交 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!