zoukankan      html  css  js  c++  java
  • 数据分析学习笔记4-----处理缺失数据

    处理缺失数据

    对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。我们称其为哨兵值。

    滤除缺失数据

    过滤掉缺失数据的办法有很多种。你可以通过pandas.isnull或布尔索引的手工方法,但dropna可能会更实用一些。对于一个Series,dropna返回一个仅含非空数据和索引值的Series:

    In [15]: from numpy import nan as NA
    
    In [16]: data = pd.Series([1, NA, 3.5, NA, 7])
    
    In [17]: data.dropna()
    Out[17]: 
    0    1.0
    2    3.5
    4    7.0
    dtype: float64
    

    填充缺失数据

    通过一个常数调用fillna就会将缺失值替换为那个常数值:

    In [27]: df = pd.DataFrame(np.random.randn(7, 3))
    
    In [28]: df.iloc[:4, 1] = NA
    
    In [29]: df.iloc[:2, 2] = NA
    
    In [30]: df
    Out[30]: 
              0         1         2
    0 -0.204708       NaN       NaN
    1 -0.555730       NaN       NaN
    2  0.092908       NaN  0.769023
    3  1.246435       NaN -1.296221
    4  0.274992  0.228913  1.352917
    5  0.886429 -2.001637 -0.371843
    6  1.669025 -0.438570 -0.539741
    In [33]: df.fillna(0)
    Out[33]: 
              0         1         2
    0 -0.204708  0.000000  0.000000
    1 -0.555730  0.000000  0.000000
    2  0.092908  0.000000  0.769023
    3  1.246435  0.000000 -1.296221
    4  0.274992  0.228913  1.352917
    5  0.886429 -2.001637 -0.371843
    6  1.669025 -0.438570 -0.539741
    

    通过一个字典调用fillna,就可以实现对不同的列填充不同的值

    In [34]: df.fillna({1: 0.5, 2: 0})
    Out[34]: 
              0         1         2
    0 -0.204708  0.500000  0.000000
    1 -0.555730  0.500000  0.000000
    2  0.092908  0.500000  0.769023
    3  1.246435  0.500000 -1.296221
    4  0.274992  0.228913  1.352917
    5  0.886429 -2.001637 -0.371843
    6  1.669025 -0.438570 -0.539741
    

    数据转换

    移除重复数据

    In [45]: data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
       ....:                      'k2': [1, 1, 2, 3, 3, 4, 4]})
    
    In [46]: data
    Out[46]: 
        k1  k2
    0  one   1
    1  two   1
    2  one   2
    3  two   3
    4  one   3
    5  two   4
    6  two   4
    

    DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行(前面出现过的行)

    In [47]: data.duplicated()
    Out[47]: 
    0    False
    1    False
    2    False
    3    False
    4    False
    5    False
    6     True
    dtype: bool
    

     

  • 相关阅读:
    P1144 最短路计数 题解 最短路应用题
    C++高精度加减乘除模板
    HDU3746 Teacher YYF 题解 KMP算法
    POJ3080 Blue Jeans 题解 KMP算法
    POJ2185 Milking Grid 题解 KMP算法
    POJ2752 Seek the Name, Seek the Fame 题解 KMP算法
    POJ2406 Power Strings 题解 KMP算法
    HDU2087 剪花布条 题解 KMP算法
    eclipse创建maven项目(详细)
    maven的作用及优势
  • 原文地址:https://www.cnblogs.com/helloluo/p/9751609.html
Copyright © 2011-2022 走看看