python处理Excel,从此爱上python

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吗?

展开阅读全文

页面更新:2024-04-29

标签:小袋   成品   库存   数量   类型   代码   客户   文件   数据   产品

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top