zoukankan      html  css  js  c++  java
  • Pandas 数据清洗常用篇

    一.缺失值

    sklearn中的preprocessing下有imputer,可进官方文档参考。这里主讲pandas。
    拿到数据,一般先检查是否有缺失值,用isnul()或notnull().
    再决定dropna(),还是fillna()。

    1.1 检查是否有缺失值 isnull()、notnull()

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({"col_1":[1, 2, 3, 666, 1480],
                      "col_2":[125, 999, 110, np.nan, 300],
                      "col_3":[1389, np.nan, np.nan, np.nan, 0]})
    df
    
    col_1 col_2 col_3
    0 1 125.0 1389.0
    1 2 999.0 NaN
    2 3 110.0 NaN
    3 666 NaN NaN
    4 1480 300.0 0.0
    df.isnull()    #询问每一个值是不是为NaN.
    
    col_1 col_2 col_3
    0 False False False
    1 False False True
    2 False False True
    3 False True True
    4 False False False
    df.notnull()   #询问每一个值是不是不为NaN,跟上面的相反就是了
    
    col_1 col_2 col_3
    0 True True True
    1 True True False
    2 True True False
    3 True False False
    4 True True True

    1.2 假设要删除缺失值dropna()

    考虑如何删,删行?删列?还是缺失多少个才删?
    DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

    • axis:决定删行删列,默认axis=0,删行;删列要修改axis=1.
    • how:决定怎么删,至少有一个NaN就删,还是全是NaN才删。default "any",只要有NA,马上删掉该行或该列。"all",全是NA时才删掉这一行或一整列。
    • thresh : 设置该行或列至少有多少个非NA值才能保留下来,有点拗口。输入整数,这个参数有必要才设置,没有就不用管。
    • subset : array-like, optional
      Labels along other axis to consider, e.g. if you are dropping rows these would be a list of columns to include.
    • inplace : 是否直接取代原数据框,默认False,所以我们真要除去行列,会inplace=True,或者给它新赋值到一个变量中。
    df.dropna()
    
    col_1 col_2 col_3
    0 1 125.0 1389.0
    4 1480 300.0 0.0

    ing~~~

  • 相关阅读:
    excel 2003系列
    DataTab转换XML XML转换DataTable 的类[转]
    全角转半角与半角转全角
    Day2
    Day6 && Day7图论
    Day1
    Android为何以及如何保存Fragment实例
    Android应用的本地化及知识拓展之配置修饰符
    Leetcode NO.136 Single Number 只出现一次的数字
    经典排序算法(四) —— Quick Sort 快速排序
  • 原文地址:https://www.cnblogs.com/wyy1480/p/10486820.html
Copyright © 2011-2022 走看看