用dropna()/fillna()来清洗(删除或者填充)DataFrame中的Na数据

我们有时候会得到某些DataFrame数据帧中存在Na的数据,这些数据需要被清洗,我们可以使用dropna()或者fillna()等方法来处理。
dropna()比较简单粗暴,他会把包含Na的那一行删除掉,当然,也可以设置dropna()中的how参数,来设定删除的规则,如how='all’就表示删除全部数据都是Na的哪一行,我们来看一下效果。
代码:

import pandas as pd
dict_data = {
	'student':["Li Lei","Han Meimei","Tom"],
	'score'	:[95,98,92],
	'gender':['M','F','M']
}
DF_data = pd.DataFrame(dict_data,columns=['gender','student','score'],index=['a','b','c'])
reindex_list = ['c','a','b','d']
DF_data = DF_data.reindex(reindex_list)
print(DF_data)
DF_data = DF_data.dropna(how='all')
# DF_data = DF_data.fillna({'gender':'M','student':'unknown','score':0})
print(DF_data)

运行结果如下:

  gender     student  score
c      M         Tom   92.0
a      M      Li Lei   95.0
b      F  Han Meimei   98.0
d    NaN         NaN    NaN
  gender     student  score
c      M         Tom   92.0
a      M      Li Lei   95.0
b      F  Han Meimei   98.0
[Finished in 6.2s]

可以看出,d行因为原部Na,被drop方法删掉了。

我们也可以使用fillna方法来对Na进行填充,一般的,我们可以指定填充的方法,一般用一个字典来制定方法。代码如下:

DF_data = DF_data.fillna({'gender':'M','student':'unknown','score':0})

这样,我们就可以把gender列的Na全部改为M,student列的Na全部改为unknown,score列的Na全部改为0。
运行结果如下:

  gender     student  score
c      M         Tom   92.0
a      M      Li Lei   95.0
b      F  Han Meimei   98.0
d    NaN         NaN    NaN
  gender     student  score
c      M         Tom   92.0
a      M      Li Lei   95.0
b      F  Han Meimei   98.0
d      M     unknown    0.0
[Finished in 5.0s]

当然,我们也可以只填写一个参数,比如fillna(0),这样所有的Na都被修改为了0.
代码:

DF_data = DF_data.fillna(0)

运行结果:

  gender     student  score
	c      M         Tom   92.0
	a      M      Li Lei   95.0
	b      F  Han Meimei   98.0
	d    NaN         NaN    NaN
	  gender     student  score
	c      M         Tom   92.0
	a      M      Li Lei   95.0
	b      F  Han Meimei   98.0
	d      0           0    0.0
	[Finished in 6.0s]
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值