6 DataFrame处理丢失数据--数据清洗

处理丢失数据
 
    有两种丢失数据:
        
        · 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数据。
 
 
===================================
练习:
  1.     简述None与NaN的区别
  2.     假设张三李四参加模拟考试,但张三因为突然想明白人生放弃了英语考试,因此记为None,请据此创建一个DataFrame,命名为ddd3

  1.     老师决定根据用数学的分数填充张三的引用成绩,如何实现,

  1. 用李四的英语成绩填充张三的英语成绩?
    
 
===================================
 
根据官方文档,我们知道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:指定一个值去替换缺失值
 
=========================================
这篇博客不错,大家可以参考下
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/avention/p/9077414.html