pandas学习下 - Task01

【问题一】 如何删除缺失值占比超过25%的列?

df.info()获取缺失值占比, 然后通过drop 一个个删除
自定义一个函数,通过df[col].isna().sum()获取某列的缺失值数量, 然后除以行数,大于25%就删除该列

【问题二】 什么是Nullable类型?请谈谈为什么要引入这个设计?

原来处理缺失值的时候没考虑清楚,导致包含缺失值的时候出现问题,比如把数值转换成float,把字符转换成object等。因此为了不影响原代码的基础上,新增了一个能很好的处理缺失值的类nullable,类型命名分别为Int64,boolean与 string。当新的命名规范被广泛使用时, 便可逐步丢弃旧的类型了。

【问题三】 对于一份有缺失值的数据,可以采取哪些策略或方法深化对它的了解?

练习

【练习一】现有一份虚拟数据集,列类型分别为string/浮点/整型,请解决如下问题:
(a)请以列类型读入数据,并选出C为缺失值的行。

xt1 = pd.read_csv(‘data/Missing_data_one.csv’).convert_dtypes()
xt1[xt1[‘C’].isna()]

(b)现需要将A中的部分单元转为缺失值,单元格中的最小转换概率为25%,且概率大小与所在行B列单元的值成正比。

选取B列最小值,确保系数大于等于1,则转换概率不会小于25%
minb = xt1[‘B’].min()
xt1[‘A’] = xt1.apply(lambda x: x.A if np.random.rand() > 0.25 * x.B / minb else pd.NA, axis = 1)

【练习二】 现有一份缺失的数据集,记录了36个人来自的地区、身高、体重、年龄和工资,请解决如下问题:
(a)统计各列缺失的比例并选出在后三列中至少有两个非缺失值的行。

xt2 = pd.read_csv(‘data/Missing_data_two.csv’).convert_dtypes()
xt2.isna().sum()/36
用到apply 里的axis = 1 对列求和。
xt2[xt2[[‘体重’,‘年龄’,‘工资’]].isna().apply(lambda x: x.sum(), axis = 1)>1]

(b)请结合身高列和地区列中的数据,对体重进行合理插值。

xt2[‘体重’] = xt2.sort_values(by = [‘地区’,‘身高’])[‘体重’].interpolate()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值