python能干的事情太多,对于小白来说,只能望洋生叹,不过不要灰心, 看看我是如何使用python 处理Excel 的,你就能理解python 的简单和高效。
一、Excel文件
1、文件路径
F:/product_demo.xls
2、文件内容(原始数据)
成品入库工作表
成品出库工作表
二、常用的Excel处理诉求
1、分类汇总
2、筛选
3、产品出入库汇总
三、使用python实现上述诉求。
分类汇总:
- 成品入库数据分类汇总,python代码:
import pandas as pd # 导入pandas包,简写为pd
df = pd.read_excel(r"F:\product_demo.xls", sheet_name="成品入库") #读入原始数据
df.fillna(0, inplace=True) # 处理excel中的空值
df = df[['product', 'description', 'small_bag', '小袋数量']] #选择要进行分类汇总的列
df.rename(columns={'小袋数量': '入库'}, inplace=True) #重命名列标题
list1 = ['product', 'description', 'small_bag'] #设置分类汇总的依据
list2 = ['入库'] #设置汇总的字段
df = df.groupby(list1)[list2].sum() #分类汇总
df.reset_index(inplace=True, drop=False) #重置索引
df['description']=df['description'].astype(str) #设置字段类型
df
运行上述代码,即可得到汇总结果,如下图所示:
成品入库产品数据分类汇总
- 成品出库产品数据分类汇总
依葫芦画瓢写python代码:
import pandas as pd
df = pd.read_excel(r"F:\product_demo.xls", sheet_name="成品出库")
df.fillna(0, inplace=True)
df = df[['product', 'description', '包装类型', '发货', '实销', '其他出库']]
df.rename(columns={'实销': '出库'}, inplace=True)
list1 = ['product', 'description', '包装类型']
list2 = ['出库', '其他出库']
df = df.groupby(list1)[list2].sum()
df.reset_index(inplace=True, drop=False)
df['description']=df['description'].astype(str)
df
运行上述代码,即可得到汇总结果,如下图所示:
筛选客户
python代码:
import pandas as pd4
df = pd4.read_excel(r"F:\product_demo.xls", sheet_name="成品出库")
df.fillna(0, inplace=True)
df = df[['customer', 'product', 'description', '包装类型', '发货', '调货', '退货', '实销', '其他出库', '运费']]
list1 = ['customer', 'product', 'description', '包装类型']
list2 = ['发货', '调货', '退货', '其他出库', '运费']
df = df.groupby(list1)[list2].sum()
df.reset_index(inplace=True, drop=False)
df['description']=df['description'].astype(str)
customer_name=input("请输入要查询的客户名称:")
df = df[df['customer'] == customer_name]#设置筛选条件
df
运行上述代码后,会提示用户输入要查询的客户名称,输入后(这里以输入客户高树友为例说明)即可得到结果,如下图:
产品出入库汇总
思路:先分别对成品入库和成品出库数据分类汇总,再将两张表的内容合并到一起即可。
python和数据库一样,有连表的功能,就是把工作表以某种合适的方式连接起来再操作。
python代码:
import pandas as pd3
df1 = pd3.read_excel(r"F:\product_demo.xls", sheet_name="成品入库")
df2 = pd3.read_excel(r"F:\product_demo.xls", sheet_name="成品出库")
df1.fillna(0, inplace=True)
df2.fillna(0, inplace=True)
df1 = df1[['product', 'description', 'small_bag', '小袋数量']]
df2 = df2[['product', 'description', '包装类型', '实销', '其他出库']]
df1['description']=df1['description'].astype(str)
df2['description']=df2['description'].astype(str)
df1.rename(columns={'小袋数量': '入库'}, inplace=True)
df2.rename(columns={'实销': '出库'}, inplace=True)
list1 = ['product', 'description', 'small_bag']
list2 = ['入库']
df1 = df1.groupby(list1)[list2].sum()
df1.reset_index(inplace=True, drop=False)
list3 = ['product', 'description', '包装类型']
list4 = ['出库', '其他出库']
df2 = df2.groupby(list3)[list4].sum()
df2.reset_index(inplace=True, drop=False)
df3 = pd3.merge(df1, df2, how='outer', left_on=['product', 'description', 'small_bag'],#连接两表的语句。
right_on=['product', 'description', '包装类型'])
df3.fillna(0, inplace=True)
df3['库存'] = df3['入库'] - df3['出库'] - df3['其他出库']
df3 = df3[df3.index != 0]
list5 = ['product', 'description', 'small_bag', '入库', '出库', '其他出库', '库存']
df3 = df3[list5]
df4 = pd3.pivot_table(df3, index=['product', 'description', 'small_bag'],
values=['入库', '出库', '其他出库', '库存'], aggfunc=sum, margins=True)
col_order = ['入库', '出库', '其他出库', '库存']
df4 = df4.reindex(col_order, axis=1)
df4
运行结果,如下图:
学会了上述几个使用python处理Excel 数据的方法,就可以举一反三,就可以一劳永逸。
你还说你不爱python吗?
声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者WarAndPeace所有,原文出处。若您的权利被侵害,请联系删除。
本文标题:(python处理excel实例)(python处理excel实例去重复)
本文链接:https://www.51qsb.cn/article/m9cn6.html