首先创建具有缺失值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)
|