牛掰!用Python处理Excel的14个常用操作总结!
off999 2025-04-30 18:50 28 浏览 0 评论
自从学了Python后就逼迫用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要判断格式,若非数值型数据直接报错。)
总结一下就是:无论用哪个工具,能解决问题就是好数据分析师!
相关推荐
- 安卓手机杀毒软件哪个最好用
-
腾讯手机管家的守护老人安全功能版本我在用,我来说说吧。此版本是专门为守护老人安全设计推出的,不但有效拦截诈骗短信,电话,木马病毒,钓鱼网址,辟谣功能可以帮助老人立即分辨养生讯息,银行卡故障讯息,保险异...
- xp3用什么模拟器打开(xp3用什么模拟器打开好)
-
可以按照以下的步骤排查解决:首先,游戏必须要使kirikiri引擎,这点可以从文件中是否含有部分xp3后缀的文件来判断然后用模拟器打开date.xp3就行了,部分汉化游戏是直接打开exe程序如果遇到d...
- 固态硬盘用mbr还是guid(固态硬盘guid好还是mbr好)
-
如果电脑原装系统是win8或者以上的,那么硬盘分区表格式为GUID(GPT)格式的;如果是win7以下的,那么一般就是MBR的。主引导记录(MBR)是计算机开机后访问硬盘时所必须要读取的首个扇区,由分...
- 为什么fps大神都是400dpi(fps为什么高)
-
400DPI,在游戏里调节不同英雄的鼠标灵敏度,可以保证最小范围微调改动鼠标移动速度。因为DPI和灵敏度是乘积关系。举个例子:如果你玩麦克雷时鼠标DPI是3200,游戏内灵敏度是1。但你切换到源氏和闪...
- 系统集成项目管理工程师难考吗
-
系统集成项目管理工程师考试的普遍通过率是在10%左右,但是并不表示考试真的有那么难。因为考试本身没有报考条件的限制,且考试报名费用很低,很多人都不重视考试。所以通过率普遍偏低,只要你认真备考,有一...
- 360影视大全下载2025免费版(下载360影视大全最新版下载安装到手机版)
-
你好朋友360影视大全里的很多视频都是免费的,建议安装最新的360影视大全就可以了打开360视频,搜索自己需要的视频,点击360播放器右下角的下载箭头,即可将视频进行下载,下载完毕之后视频会保存在36...
- 360安全卫士手机版下载(360安全卫士官方免费下载手机版5.5.0)
-
相当靠谱360手机卫士是一款由奇虎网推出的功能强、效果好、受用户欢迎的上网安全软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、保护隐私等多种功能,并独创了“木马防火墙”“360密盘”等...
- deepin和统信uos(统信和deepin的区别)
-
差不多。1Deepin原名LinuxDeepin、deepinos、深度操作系统,于2014年4月改名Deepin。deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌...
- 三星驱动(三星驱动板)
-
驱动是必须装的,但不需要单独安装驱动。 1、电脑的所有硬件,必然要装驱动,键盘、鼠标什么的,都是有驱动的。驱动是软件和硬件结合的桥梁。但多数普通常见的硬件,驱动是widnows系统自带的,不需要用户...
- u盘启动杀毒软件(u盘杀毒系统)
-
有,但是主要是专杀工具,全面的综合杀毒软件基本上没有,因为没什么用。 1、放在U盘里的杀毒软件,就是不安装,也不监控,只杀毒的软件。 2、目前的杀毒软件的工作机制,主要是监控,监控电脑不感染病...
- 联想维修站点查询官网(联想 维修 服务网点)
-
您可以在联想的官方网站上查询到附近的授权维修服务点,或者拨打联想的客服电话寻求帮助。在维修服务点,您可以享受到专业的维修服务,包括硬件故障、软件问题、系统优化等方面的维护和维修。维修人员将会根据您的电...
- 电脑不识别移动硬盘(移动硬盘灯亮但不读取)
-
电脑不能识别移动硬盘可能是由于以下原因造成的:1.电脑和硬盘之间的连接首先,可以确保移动硬盘正确连接到电脑上,检查USB接口是否松动或损坏,可以尝试更换USB线或者尝试连接到其他USB接口看是否能够...
- 键盘的win键在哪里(电脑键盘的win键在哪里)
-
win键就是电脑键盘上显示WINDOWS标志的按键。位于CTRL键与ALT键两个键之间,win键的具体位置一般电脑键盘上有左右两个。Windows键是一种特殊的键,通常位于键盘的左下角。它的图案是一个...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
