自从学了Python后就逼迫自己不用Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。这也是我写这篇文章的初衷。废话不说了,直接进入正题。

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

一、关联公式:Vlookup

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

df1=sale[['订单明细号','单据日期','地区名称', '业务员名称','客户分类', '存货编码', '客户名称', '业务员编码', '存货名称', '订单号',

'客户编码', '部门名称', '部门编码']]

df2=sale[['订单明细号','存货分类', '税费', '不含税金额', '订单金额', '利润', '单价','数量']]

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

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

那用python是如何实现的呢?

#查看订单明细号是否重复,结果是没。

df1["订单明细号"].duplicated().value_counts()

df2["订单明细号"].duplicated().value_counts()

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

二、数据透视表

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

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

三、对比两列差异

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

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

sale["订单明细号2"]=sale["订单明细号"]

#在订单明细号2里前10个都+1.

sale["订单明细号2"][1:10]=sale["订单明细号2"][1:10]+1

#差异输出

result=sale.loc[sale["订单明细号"].isin(sale["订单明细号2"])==False]

四、去除重复值

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

sale.drop_duplicates("业务员编码",inplace=True)

五、缺失值处理

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

#列的行数小于index的行数的说明有缺失值,这里客户名称329<335,说明有缺失值

sale.info()

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

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

#用0填充缺失值

sale["客户名称"]=sale["客户名称"].fillna(0)

#删除有客户编码缺失值的行

sale.dropna(subset=["客户编码"])

六、多条件筛选

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

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

七、 模糊筛选数据

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

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

八、分类汇总

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

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

九、条件计算

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

sale.loc[sale["存货名称"].str.contains("三星")&(sale["税费"]>=1000)][["订单明细号","利润"]].describe()

十、删除数据间的空格

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

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

十一、数据分列

需求:将日期与时间分列。

sale=pd.merge(sale,pd.DataFrame(sale["单据日期"].str.split(" ",expand=True)),how="inner",left_index=True,right_index=True)

十二、异常值替换

首先用describe()函数简单查看一下数据有无异常值。

#可看到销项税有负数,一般不会有这种情况,视它为异常值。

sale.describe()

需求:用0代替异常值。

sale["订单金额"]=sale["订单金额"].replace(min(sale["订单金额"]),0)

十三、分组

需求:根据利润数据分布把地区分组为:"较差","中等","较好","非常好"

首先,当然是查看利润的数据分布呀,这里我们采用四分位数去判断。

sale.groupby("地区名称")["利润"].sum().describe()

根据四分位数把地区总利润为[-9,7091]区间的分组为“较差”,(7091,10952]区间的分组为"中等"

(10952,17656]分组为较好,(17656,37556]分组为非常好。

#先建立一个Dataframe

sale_area=pd.DataFrame(sale.groupby("地区名称")["利润"].sum()).reset_index()

#设置bins,和分组名称

bins=[-10,7091,10952,17656,37556]

groups=["较差","中等","较好","非常好"]

#使用cut分组

#sale_area["分组"]=pd.cut(sale_area["利润"],bins,labels=groups)

十四、根据业务逻辑定义标签

需求:销售利润率(即利润/订单金额)大于30%的商品信息并标记它为优质商品,小于5%为一般商品。

sale.loc[(sale["利润"]/sale["订单金额"])>0.3,"label"]="优质商品"

sale.loc[(sale["利润"]/sale["订单金额"])<0.05,"label"]="一般商品"

其实excel常用的操作还有很多,我就列举了14个自己比较常用的,若还想实现哪些操作可以评论一起交流讨论,另外我自身也知道我写python不够精简,惯性使用loc。(其实query会比较精简)。若大家对这几个操作有更好的写法请务必评论告知我,感谢!

最后想说说,我觉得最好不要拿excel和python做对比,去研究哪个好用,其实都是工具,excel作为最为广泛的数据处理工具,垄断这么多年必定在数据处理方便也是相当优秀的,有些操作确实python会比较简单,但也有不少excel操作起来比python简单的。比如一个很简单的操作:对各列求和并在最下一行显示出来,excel就是对一列总一个sum()函数,然后往左一拉就解决,而python则要定义一个函数(因为python要判断格式,若非数值型数据直接报错。)

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

--------------------------------分割线

收藏之前点个赞?感谢!

一个记录会计到数据、算法路上所学微信公众号:Dathon

python处理excel的方法有哪些_用Python实现excel 14个常用操作相关推荐

  1. python编程的基本方法有哪些_学习Python编程的11个入门技巧

    我们非常激动,您决定开始学习Python的旅程!我们从读者那里收到的最常见问题之一是"学习Python的最佳方法是什么?" 我相信学习任何编程语言的第一步就是要确保您了解如何学习. ...

  2. python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  3. excel 两组数据交点_初识Python 数据可视化

    ✨  冒号说:发着小光小热的小点点 ✨    "一图胜千言."          ----Arthur Brisbane 听说这个最近很火!在这个信息爆炸的时代,科技虽然使得数据获 ...

  4. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究

    基于 Python 构造方法与析构方法的研究 林观德 [期刊名称] < <现代职业教育> > [年 ( 卷 ), 期] 2019(000)018 [摘要] Python 语言是 ...

  5. excel表格横向纵向变换_从Python到Excel

    在Python的CommandLine中输入: [四大基本运算] a1=100 a2=3 print( a1+a2 ) print ( a1-a2) print ( a1 * a2) print ( ...

  6. python方法测试怀孕_在Python中测试私有方法(例外)

    在阅读了关于在Python中测试私有方法的内容之后,特别是在How do I unit test the methods in a method object?处引用了接受的答案,看来最好只测试公共接 ...

  7. python里的rindex是什么意思_用Python操作字符串之rindex()方法的使用

    用Python操作字符串之rindex()方法的使用 rindex()方法返回所在的子str被找到的最后一个索引,可选择限制搜索的字符串string[beg:end] 如果没有这样的索引存在,抛出一个 ...

  8. python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...

    原标题:用Python赚钱的5个方法,教你业余时间月赚几千外快 Python作为一门编程语言,一门技术,就一定能够为我们所用,至少赚个外快是绝对没有问题的. 我之前做过半年少儿编程老师,一个小学四年级 ...

  9. excel按季度分类汇总_按部门对Excel表格中数据进行分类汇总的方法

    分类汇总是Excel的一项重要功能,它能快速以某一个字段为分类项,对数据列表中其他字段的数值进行统计计算.本文以在表格中按照部门来统计数据总和为例介绍Excel表格中数据进行分类汇总的方法的操作方法. ...

最新文章

  1. 干货丨一份机器学习的初学者指南
  2. 解惑:为什么云计算和物联网会同时出现——微云网络
  3. PyTorch基础-Dropout和正则化-05
  4. MySQL运维常用系统命令
  5. 服务器***处理三则
  6. 查找整数的位置c语言,1-1 编程总结:查找整数
  7. iphone开发每日一练【2011-10-21】
  8. Vue组件动态(异步)传值
  9. 正确的握笔姿势,握笔的姿势非常的重要
  10. Problem D 牛栏(aggr)
  11. TextView 设置显示省略号
  12. linux开启磁盘多队列(blk-mq)
  13. 股票交易sdk接口是什么意思?
  14. vue-treeselect下拉树
  15. 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
  16. oracle hint 强制索引
  17. linux定时删除文件,如何操作Linux 定时删除指定目下N天前的文件
  18. 计算机控制技术注册二建,中央空调系统运行培训
  19. 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(1)
  20. 强引用,软引用,弱引用和虚引用的说明

热门文章

  1. Camera Tuning?
  2. 暴走漫画Windows Phone端
  3. haskell 基础题解(31)
  4. ARM经典300问(转贴)
  5. Android基础控件——ImageView的自定义,巧用Matrix实现图片不变形的炫酷PK条
  6. 电脑重装的时候这样设置一下,可以解决99%遇到的各种问题
  7. 无线网卡MT7601U驱动的移植
  8. 材料好还是计算机好,塑料PC材质好还是PP好,PP、PC、PE有何区别?哪个更好?哪个更贵?...
  9. 第一型曲线积分的几何意义
  10. 电商产品设计:后台营销功能模块设计-砍价活动(二)