Python 数据清洗之缺失数据滤除dropna()

实际应用中,在得到原始数据时,经常碰到数据缺失问题,对数据进行加工或清洗就非常有必要了

import numpy as np
from numpy import nan
import pandas as pd
data=pd.DataFrame(np.arange(3,19,1).reshape(4,4),index=list('abcd'))
print(data)
print(data.isnull())   ### 查看data是否有缺失值(空值),False无缺失值
pritn(data.notnull())  ### 查看data是否有缺失值(空值),True无缺失值
输出结果:
    0   1   2   3
a   3   4   5   6
b   7   8   9  10
c  11  12  13  14
d  15  16  17  18
       0      1      2      3
a  False  False  False  False
b  False  False  False  False
c  False  False  False  False
d  False  False  False  False
      0     1     2     3
a  True  True  True  True
b  True  True  True  True
c  True  True  True  True
d  True  True  True  True
print(data.drop('a'))        ### 默认参数axis=0,根据索引(index)删除指定的行
print(data.drop(1,axis=1)    ### axis=1,根据列名(columns)删除指定的列
    0   1   2   3
b   7   8   9  10
c  11  12  13  14
d  15  16  17  18
    0   2   3
a   3   5   6
b   7   9  10
c  11  13  14
d  15  17  18
print(data.drop(index=list('ac')))         ### 删除索引为‘ac’这2行,或print(data.drop(index=['a','c']))
print(data.drop([1,3],axis=1))             ### 删除列名为‘13’这2列
    0   1   2   3
b   7   8   9  10
d  15  16  17  18
    0   2
a   3   5
b   7   9
c  11  13
d  15  17
data.iloc[0:2,0:3]=nan  ### 取data前2行和前3列为空值
print(data)
print(data.isnull())    ### True为有缺失值
      0     1     2   3
a   NaN   NaN   NaN   6
b   NaN   NaN   NaN  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18
       0      1      2      3
a   True   True   True  False
b   True   True   True  False
c  False  False  False  False
d  False  False  False  False
print(data.dropna())  ### 默认axis=0,how='any',删除带有空值的行,只要有一个空值,就删除整行
      0     1     2   3
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18
print(data.dropna(axis=1)) ### axis=1,删除带有空值的列,只要有一个空值,就删除整列
    3
a   6
b  10
c  14
d  18
data=pd.DataFrame(np.arange(3,19,1).reshape(4,4),index=list('abcd'))
print(data)
data.iloc[0:1,:]=nan
data[3]=nan
print(data)
      0     1     2   3
a   NaN   NaN   NaN NaN
b   7.0   8.0   9.0 NaN
c  11.0  12.0  13.0 NaN
d  15.0  16.0  17.0 NaN
print(data.dropna(how='all'))       ### 整行都是空值时,才会被删除
      0     1     2   3
b   7.0   8.0   9.0 NaN
c  11.0  12.0  13.0 NaN
d  15.0  16.0  17.0 NaN
print(data.dropna(how='all',axis=1))    ### 整列都是空值时,才会被删除
      0     1     2
a   NaN   NaN   NaN
b   7.0   8.0   9.0
c  11.0  12.0  13.0
d  15.0  16.0  17.0
### thresh,设定阈值,缺失值个数大于该阈值,整行(axis=0)或整列(axis=1)才会被删除

print(data.dropna(thresh=2)) ### thresh=2,缺失值个数大于2,该行才会被删
      0     1     2   3
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18
print(data.dropna(subset=[1,2]))  ### 删除指定列中包含缺失值的行
      0     1     2   3
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

 

你可能感兴趣的:(数据分析)