用Python处理Excel的14个常用操作转载
原创大家好,我是菜鸟兄弟!自学习以来Python之后,它强制使用之后,它被强制使用之后,它强制使用Python来处理Excel所有操作都使用执行所有操作Python意识到了。其目的是巩固Python,具有增强的数据处理能力。这就是我最初写这篇文章的原因。不多说了,让我们开门见山吧。这些数据是在网上找到的销售数据,如下所示。
I.缔合式I.缔合式I.从属式I.缔合式: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]
IV.删除重复值IV.删除重复值IV.删除重复值
需求:去除销售员代码销售员代码的重复值
sale.drop_duplicates("销售员代码销售员代码",inplace=True)
V.缺失值处理V.缺失值处理V.缺失值处理
首先检查哪些销售数据列缺少值。
#一列的行数小于列的行数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()
IX.条件IX的计算。条件计算
要求:存货名称包含三星单词,且税额高于1000一共有多少个订单?这些订单的总额和平均利润是多少?(或最小、最大、四分位数、显著差)
sale.loc[sale["存货名称"].str.contains("三星")&(sale["税费"]>=1000)][["订单明细编号订单明细编号订单明细编号","利润"]].describe()
删除数据之间的空格X.删除数据之间的空格X.删除数据之间的空格
要求:删除存货名称两侧的空格。
sale["存货名称"].map(lambda s :s.strip(""))
习。数据分解XI。数据解聚XI.数据解聚
要求:列出日期和时间。要求:列出日期和时间。要求:细分日期和时间。
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)
第十三条第十三组。分组XIII。第十三组。子群
需求:根据利润数据的分布情况对区域进行分组"较差","中等","较好","非常好"
首先当然是检查利润数据的分布啊,这里我们用四分位数来确定。
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)
14、根据标签的业务逻辑定义
需求:销售利润率(即利润)/订单金额)大于(订单金额)大于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它是对列TOTAL A它是对TOTAL A的列它是对列总是A是对列TOTAL Asum()函数,然后将其拉到左侧以求解它,而python然后定义函数(因为然后定义了函数(因为然后定义了函数(此后定义了函数python(如果非数字数据直接报告错误,则确定格式。)
总而言之。要而论之。总而言之。总而言之,就是这样。 无论您使用哪种工具,优秀的数据分析师都能解决问题!
转自:菜J学Python
推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题 | 从零开始学习从零基础学习从零基础学习8个月的Python | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 | 从万众期待到口碑惨败!唐探3令人失望 | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!轻松修复桌子和水印!易于修复表单和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!| 再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!
年度弹出式文案年度弹出式文案
-
1). 卧槽!Pdf转Word用Python轻松搞定 !
-
2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿
-
3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密
-
4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身
-
5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途
-
6). 30个Python古怪技能集古怪小贴士收藏古怪技能集
-
7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货
-
8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !
-
9).发现了一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片
点击阅读原文点击查看点击点击阅读点击阅读原文点击查看B放我鸽子看录像!站在我的录像带上!在视频里放我鸽子!站在我的录像带上!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除