用Python处理Excel的14个常用操作

用Python处理Excel的14个常用操作

大家好,我是菜鸟哥!

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

用Python处理Excel的14个常用操作

一、关联公式: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

用Python处理Excel的14个常用操作

需求:用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()

登录后复制

用Python处理Excel的14个常用操作

十、删除数据间的空格

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

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

十一、数据分列

用Python处理Excel的14个常用操作

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

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

登录后复制

十二、异常值替换

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

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

sale.describe()

登录后复制

用Python处理Excel的14个常用操作

需求:用0代替异常值。

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

登录后复制

十三、分组

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

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

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

登录后复制

用Python处理Excel的14个常用操作

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

#先建立一个Dataframesale_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["订单金额"])

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

最后想说说,我觉得最好不要拿excel和python做对比,去研究哪个好用,其实都是工具,excel作为最为广泛的数据处理工具,垄断这么多年必定在数据处理方便也是相当优秀的,有些操作确实python会比较简单,但也有不少excel操作起来比python简单的。

比如一个很简单的操作:对各列求和并在最下一行显示出来,excel就是对一列总一个sum()函数,然后往左一拉就解决,而python则要定义一个函数(因为python要判断格式,若非数值型数据直接报错。)

登录后复制

以上就是用Python处理Excel的14个常用操作的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2240418.html

(0)
上一篇 2025年2月26日 20:18:10
下一篇 2025年2月22日 21:40:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python多线程、多进程详细整理

    线程与进程的区别 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。线程是程序中一个单一的顺…

    2025年2月26日 编程技术
    200
  • Python量化交易实战:获取股票数据并做分析处理

    量化交易(也称自动化交易)是一种应用数学模型帮助投资者进行判断,并且根据计算机程序发送的指令进行交易的投资方式,它极大地减少了投资者情绪波动的影响。量化交易的主要优势如下: 快速检测客观、理性自动化 量化交易的核心是筛选策略,策略也是依靠数…

    2025年2月26日 编程技术
    200
  • 用 Python 实现十大经典排序算法

    10种经典排序算法包括冒泡排序、选择排序、快速排序、归并排序、堆排序、插入排序、希尔排序、计数排序、桶排序、基数排序等。 当然,还有一些其他的排序算法,大家可以继续去研究下。 01冒泡排序 冒泡排序(Bubble Sort)是一种比较简单的…

    2025年2月26日 编程技术
    200
  • Python掌握并熟悉列表、元祖、字典、集合数据类型

    序列对象( sequence ) “序列”是程序设计中经常用到的数据存储方式。在其他程序设计语言中,”序列”通常被称为”数组“,用于存储相关数据项的数据结构。几乎每一种程序设计语言都提供了”序列” 数据结…

    2025年2月26日 编程技术
    200
  • 分享 18 个 Python 高效编程技巧

    本文由Python编程时光整理 Python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了。高级语言,如果做不到这样,还扯啥高级呢? 01 交换变量 >>>a=3>&g…

    2025年2月26日
    200
  • 刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

    在本文中,我总结了 6 种 Python 编写方式案例。 1.不要导入根模块 在使用 Python 时,我们无法避免的一件事是导入模块,无论是内置模块还是第三方模块。有时,我们可能只需要该模块中的一个或几个函数或对象。在这种情况下,我们应该…

    2025年2月26日 编程技术
    200
  • 提升Python程序性能的七个习惯

    1、使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存。 使用局部变量替换模块名字空间中的变量,例如 ls = os.linesep。一方面可以提高程序性能,局部变量查找速度更快;另一方面可用简短标识符替代冗长的模块变…

    2025年2月26日
    200
  • 2022年现代Python编程的四个关键点

    作为一个诞生已有 30 余年的编程语言,Python 的流行度在近几年迎来了爆炸性的增长。为了方便大家能够更好的采用 Python,利用该语言中所有新的和强大的功能;InfoWorld 归纳总结了开发人员在 2022 年编写现代 Pytho…

    2025年2月26日
    200
  • Python列表解析式到底该怎么用?

    Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,将会展示列表解析式(List Comprehension)。我们将讨论如何使用它?什么时候该或不该使用它? 列表解析式的优势 比循环更节省时间…

    2025年2月26日
    200
  • 用 Python 内置库创建一个命令行应用程序

    当创建一个应用程序时,通常希望能够告诉你的应用程序如何做某事。有两种流行的方法来完成这项任务,你可以让应用程序接受命令行参数,或者创建一个图形化的用户接口。有些应用程序两者都支持。 当你需要在服务器上运行你的代码时,命令行接口很有帮助。大多…

    2025年2月26日
    200

发表回复

登录后才能评论