处理丢失数据
有两种丢失数据:
· None
· np.nan(NaN)
1 None
None是Python自带的,其类型为Python object。因此,None不能参与到任何计算中。
object类型的运算要比int类型的运算慢得多
计算不同数据类型求和时间
2 np.nan(NaN)
np.nan是浮点型,能参与到计算中。但计算结果总是NaN。
可以使用np.nan*()函数来计算nan,此时视nan为0。
3 pandas中的None与NaN
1)pandas中None与np.nan都视作np.nan
创建DataFrame
张三、小齐的work列没有值,需要进行数据清洗。
isnull()
notnull()
isnull()
将空的数据就提取出来了。
notnull()判断数据不为空,所有数据都不为空,才能提取出来,用all(),只要有一个为空用any()。
dropna():过滤丢失数据
Signature: df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)Docstring:
Remove missing values.
数据清洗通常只会将不符合条件的数据行删除,所以axis=0.
可以选择过滤的行还是列(默认是行)
也可以选择过滤的方式 how='all'
fillna():填充丢失数据
填充函数Series/DataFrame
Signature: df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)Docstring:
Fill NA/NaN values using the specified method
如果将 inplace=True ,就会更改原DataFrame数据,而不是返回新的DataFrame数据。
===================================
练习:
- 简述None与NaN的区别
- 假设张三李四参加模拟考试,但张三因为突然想明白人生放弃了英语考试,因此记为None,请据此创建一个DataFrame,命名为ddd3
- 老师决定根据用数学的分数填充张三的引用成绩,如何实现,
- 用李四的英语成绩填充张三的英语成绩?
===================================
根据官方文档,我们知道fillna有一下几种method:‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None;
那么每一种method都是起什么样的作用呢?
method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None
Method to use for filling holes in reindexed Series pad / ffill: propagate last valid observation forward to next valid backfill / bfill: use NEXT valid observation to fill gap
pad/ffill:用前一个非缺失值去填充该缺失值
backfill/bfill:用下一个非缺失值填充该缺失值
None:指定一个值去替换缺失值
=========================================
这篇博客不错,大家可以参考下