python能干的事情太多,对于小白来说,只能望洋生叹,不过不要灰心, 看看我是如何使用python 处理Excel 的,你就能理解python 的简单和高效。 一、Excel文件 1、文件路径 F:/product_demo.xls 2、文件内容(原始数据) 成品入库工作表 成品出库工作表二、常用的Excel处理诉求 1、分类汇总 2、筛选 3、产品出入库汇总 三、使用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吗?
|