Python处理缺失值

时间:2021-11-23 20:34:22

首先创建具有缺失值NaN(Not A Number)的CSV(comma-separated values)文件:

import pandas as pd
from io import StringIO
csv_data = '''A,B,C,D
1.0,2.0,3.0,4.0
5.0,6.0,,8.0
0.0,11.0,12.0,'''

# If you are using Python 2.7, you need
# to convert the string to unicode:
# csv_data = unicode(csv_data)
df = pd.read_csv(StringIO(csv_data))

删除含缺失值的样本

具体处理方法:

  • df.isnull()#是缺失值返回True,否则范围False
  • df.isnull().sum()#返回每列包含的缺失值的个数
  • df.dropna()#直接删除含有缺失值的行
  • df.dropna(axis = 1)#直接删除含有缺失值的列
  • df.dropna(how = 'all')#只删除全是缺失值的行
  • df.dropna(thresh = 4)#保留至少有4个缺失值的行
  • df.dropna(subset = ['C'])#删除含有缺失值的特定的列

填充缺失值

数值型数值(Numerical Data)

方法一:fillna()函数

  • df.fillna(0):用0填充
  • df.fillna(method='pad'):用前一个数值填充
  • df.fillna(df2.mean()):用该列均值填充

方法二:Imputer

from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)#均值填充缺失值
imr = imr.fit(df)
imputed_data = imr.transform(df.values)