Pandas学习-Task04

Datawhale开源内容:https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch4.html#id2
我只能说有这么好的教程,并且可以跟着大佬一起学习的感觉真的太好了!!!群里解答疑惑真的很棒!!!

【写在前面】:

本次的笔记排版我借鉴了一下优秀笔记的排版👍,显得更有层次更清晰了👏。但是我的内容还是没有像优秀笔记们把所有知识点都列出来(他们真的很棒🌹),对于我的第一遍学习来说,我希望自己的重心在知识上,把时间更多的花在让自己用眼、脑将每章节的知识反复过脑子,不断让其产生联系,发生化学作用上。如果之后学习到一定程度,能把这些知识都消化到自己的肚子里的时候,我应该会选择将知识点按照自己的理解整理一遍。向优秀的群友学习哈哈哈😊~

注:本文会将练一练练习题思考过程和解答都记录下来,部分习题还自己增加了一点练习。

在这里插入图片描述

【练一练-01】:
根据上下四分位数分割,将体重分位high、normal、low三组,统计身高的均值。

【我的解答】:

我最开始只想只用本章节的知识来解决这个问题,但是发现并不能解决。并且通过思维导图部分,我们可以知道分组条件可以是列名,也可以是逻辑判断。这里既然要分为三组,那么普通的bool只有True和False就不能用啦。就得思考下,怎么才能通过逻辑判断让分组条件返回三个值

在上一章节中,我们学到了逻辑替换,包括wheremask。那么我们就可以使用条件来替换返回的值啦。将三个分组的条件写为condition,然后再值替换为对应的三分组,最后再对该分组进行求均值。

condition1 = df.Weight < df.Weight.quantile(0.25)
condition2 = (df.Weight.quantile(0.25) <= df.Weight) & (df.Weight <= df.Weight.quantile(0.75))
condition3 = df.Weight > df.Weight.quantile(0.75)

lnh = df.Weight.mask(condition1, 'Low').mask(condition2, 'Normal').mask(condition3, 'High')
df.groupby(lnh)['Weight'].mean()

在这里插入图片描述
【补充思考】:

我发现,这里其实还有一个问题,因为男女身高的高矮评判标准是不一样的,所以更合理的处理应该是在增加一个性别的行索引,让其作为外层的行索引。

【我的解答】:

我首先的处理办法是将列名“Gender”与刚才的条件lnh同时作为分组依据来做,但是发现报错了:TypeError: ‘Series’ objects are mutable, thus they cannot be hashed。所以注意⚠️:不能同时将列名与条件作为分组依据,但是其中任何一个都可以单独作为分组依据。
在群里问了大佬后,处理办法为,先将刚才生成的那一列加到数据上,然后再同时使用两个列名来进行分组即可。

df.insert(df.shape[1], 'Weight-Group', lnh)
df.groupby(['Gender', 'Weight-Group'])['Weight'].mean()

在这里插入图片描述

【练一练-02】:
上一小节介绍了可以通过drop_duplicates得到具体的组类别,现请用groups属性完成类似的功能。

【我的解答】:

drop_duplicates 作用回顾:


                
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值