zoukankan      html  css  js  c++  java
  • 4、Python 数据分析-Pandas数据清洗【1】

    1、处理丢失数据

    • 有两种丢失数据:
      • None
      • np.nan(NaN)

    2、两种丢失数据的区别

    2.1、None是Python自带的,其类型为Python object。因此,None不能参与到任何计算中。

    object类型的运算要比int类型的运算慢得多

    计算不同数据类型求和时间

    type(None)
    >>>
    NoneType
    

    2.2、np.nan(NaN)

    np.nan是浮点型,能参与到计算中。但计算结果总是NaN。

    可以使用np.nan*()函数来计算nan,此时视nan为0。

    type(np.nan)
    >>>
    float
    

    2.3、pandas中的None与NaN

    1)pandas中None与np.nan都视作np.nan

    df = DataFrame({'age':[18,22,34,25,13],
                    'sex':['男','女','男','男','女']},
                    index=['小张','小王','小李','小马','小胡'],
                    columns=['age','sex','hobby'])
    

    2.4、pandas处理空值操作

    • isnull
    • notnull
    • any
    • all
    • dropna
    • fillna
    小马,小胡的hobby列没有值,需要进行数据清洗。
    df.isnull().any(axis=1)#以行为单位
    >>>
    小张    False
    小王    False
    小李    False
    小马     True
    小胡     True
    dtype: bool
    
    #查看哪些数据为空值
    s = df.isnull().any(axis=1)
    df[s]
    

    # 将空的数据进行提取
    s1 = df.notnull()
    

    s2 = s.all(axis=1)
    df[s2]
    

    notnull()判断数据不为空,所有数据都不为空,才能提取出来,用all(),只要有一个为空用any()。dropna():高级用法,直接将存在缺失数据的行删除

    过滤行

    df.dropna(axis=0)
    

    也可以选择过滤的方式 how='any'

    df.dropna(axis=0,how='any')
    

    fillna():填充丢失数据

         填充函数Series/DataFrame
    
    #对所有的NaN数据进行替换
    df.fillna(value='排BUG')
    

    #用下一行数据进行填充(近邻值)
    df.fillna(method='bfill',axis=0)
    
    #用上一行数据进行填充(近邻值)
    df.fillna(method='ffill',axis=0)
    

    如果将 inplace=True ,就会更改原DataFrame数据,而不是返回新的DataFrame数据。

    3、练习

    自定义一个携带空值的df,然后要求使用列的均值填充列中的空值

    import numpy as np
    
    
    df = DataFrame(data=np.random.randint(0,100,size=(10,8)),columns=['A','B','C','D','E','F','G','H'])
    df.iloc[1,3] = None
    df.iloc[3,4] = np.nan
    df.iloc[5,5] = np.nan
    df.iloc[2,4] = np.nan
    df.iloc[2,5] = np.nan
    
    

    for col in df.columns:	
        #将存有空值的列找到
        if df[col].isnull().sum() > 0:
            df[col] = df[col].fillna(value=np.mean(df[col]))
    

  • 相关阅读:
    无废话WCF入门教程六[一个简单的Demo]
    MVC分页
    用于查询的日期类型转换帮助类
    无废话SharePoint入门教程五[创建SharePoint页面布局]
    一天内“被喷”7.5小时后感
    无废话SharePoint入门教程四[创建SharePoint母版页]
    无废话SharePoint入门教程三[创建网站集和网站]
    无废话SharePoint入门教程二[SharePoint发展、工具及术语]
    MTK USER版本禁止log输出
    MTK 音量加减键修改为默认控制媒体音量
  • 原文地址:https://www.cnblogs.com/remixnameless/p/13205559.html
Copyright © 2011-2022 走看看