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