Python实现Excel的10个常用操作!干货满满(建议收藏)

自从学了Python后就逼迫自己不用Excel,所有操作用Python实现。直接进入正题。

数据是网上找到的销售数据,长这样:

Python实现Excel的10个常用操作!干货满满(建议收藏)

一、关联公式:Vlookup

vlookup是excel几乎最常用的公式,一般用于两个表的关联查询等。所以我先把这张表分为两个表。

<code>df1=sale[['订单明细号','单据日期','地区名称', '业务员名称','客户分类', '存货编码', '客户名称', '业务员编码', '存货名称', '订单号',
'客户编码', '部门名称', '部门编码']]
df2=sale[['订单明细号','存货分类', '税费', '不含税金额', '订单金额', '利润', '单价','数量']]/<code>

需求:想知道df1的每一个订单对应的利润是多少。

利润一列存在于df2的表格中,所以想知道df1的每一个订单对应的利润是多少。用excel的话首先确认订单明细号是唯一值,然后在df1新增一列写:=vlookup(a2,df2!a:h,6,0) ,然后往下拉就ok了。(剩下13个我就不写excel啦)

那用python是如何实现的呢?

<code>#查看订单明细号是否重复,结果是没。
df1["订单明细号"].duplicated().value_counts()
df2["订单明细号"].duplicated().value_counts()

df_c=pd.merge(df1,df2,on="订单明细号",how="left")/<code>

二、数据透视表

需求:想知道每个地区的业务员分别赚取的利润总和与利润平均数。

<code>pd.pivot_table(sale,index="地区名称",columns="业务员名称",values="利润",aggfunc=[np.sum,np.mean])/<code>

三、对比两列差异

因为这表每列数据维度都不一样,比较起来没啥意义,所以我先做了个订单明细号的差异再进行比较。

需求:比较订单明细号与订单明细号2的差异并显示出来。

<code>sale["订单明细号2"]=sale["订单明细号"]

#在订单明细号2里前10个都+1.
sale["订单明细号2"][1:10]=sale["订单明细号2"][1:10]+1

#差异输出
result=sale.loc[sale["订单明细号"].isin(sale["订单明细号2"])==False]/<code>

四、去除重复值

需求:去除业务员编码的重复值

<code>sale.drop_duplicates("业务员编码",inplace=True)/<code>

五、缺失值处理

先查看销售数据哪几列有缺失值。

<code>#列的行数小于index的行数的说明有缺失值,这里客户名称329<335,说明有缺失值
sale.info()/<code>
Python实现Excel的10个常用操作!干货满满(建议收藏)

需求:用0填充缺失值或则删除有客户编码缺失值的行。实际上缺失值处理的办法是很复杂的,这里只介绍简单的处理方法,若是数值变量,最常用平均数或中位数或众数处理,比较复杂的可以用随机森林模型根据其他维度去预测结果填充。若是分类变量,根据业务逻辑去填充准确性比较高。比如这里的需求填充客户名称缺失值:就可以根据存货分类出现频率最大的存货所对应的客户名称去填充。

这里我们用简单的处理办法:用0填充缺失值或则删除有客户编码缺失值的行。

<code>#用0填充缺失值
sale["客户名称"]=sale["客户名称"].fillna(0)
#删除有客户编码缺失值的行
sale.dropna(subset=["客户编码"])/<code>

六、多条件筛选

需求:想知道业务员张爱,在北京区域卖的商品订单金额大于6000的信息。

<code>sale.loc[(sale["地区名称"]=="北京")&(sale["业务员名称"]=="张爱")&(sale["订单金额"]>5000)]/<code> 

七、 模糊筛选数据

需求:筛选存货名称含有"三星"或则含有"索尼"的信息。

<code>sale.loc[sale["存货名称"].str.contains("三星|索尼")]/<code>

八、分类汇总

需求:北京区域各业务员的利润总额。

<code>sale.groupby(["地区名称","业务员名称"])["利润"].sum()/<code>

九、条件计算

需求:存货名称含“三星字眼”并且税费高于1000的订单有几个?这些订单的利润总和和平均利润是多少?(或者最小值,最大值,四分位数,标注差)

<code>sale.loc[sale["存货名称"].str.contains("三星")&(sale["税费"]>=1000)][["订单明细号","利润"]].describe()/<code>
Python实现Excel的10个常用操作!干货满满(建议收藏)

十、删除数据间的空格

需求:删除存货名称两边的空格。

<code>sale["存货名称"].map(lambda s :s.strip(""))/<code>

无论用哪个工具,能解决问题就是好数据分析师!

来源:https://zhuanlan.zhihu.com/p/30072060

Python实现Excel的10个常用操作!干货满满(建议收藏)

结尾

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。


分享到:


相關文章: