(python处理excel实例)(python处理excel的库)

python能干的事情太多,对于小白来说,只能望洋生叹,不过不要灰心, 看看我是如何使用python 处理Excel 的,你就能理解python 的简单和高效。

一、Excel文件

1、文件路径

F:/product_demo.xls

(python处理excel实例)(python处理excel的库)

2、文件内容(原始数据)

(python处理excel实例)(python处理excel的库)

成品入库工作表

(python处理excel实例)(python处理excel的库)

成品出库工作表

二、常用的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处理excel实例)(python处理excel的库)

成品入库产品数据分类汇总

  • 成品出库产品数据分类汇总

依葫芦画瓢写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处理excel实例)(python处理excel的库)

筛选客户

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处理excel实例)(python处理excel的库)

产品出入库汇总

思路:先分别对成品入库和成品出库数据分类汇总,再将两张表的内容合并到一起即可。

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处理excel的库)

学会了上述几个使用python处理Excel 数据的方法,就可以举一反三,就可以一劳永逸。

你还说你不爱python吗?

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者WarAndPeace所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(python处理excel实例)(python处理excel的库)
本文链接:https://www.51qsb.cn/article/m9cv7.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-06-21
下一篇2023-06-21

你可能还想知道

发表回复

登录后才能评论