使用Python内置的函数与第三方库missingno,进行数据缺失值处理。
import pandas as pd
from io import StringIO
import matplotlib.pyplot as plt
csv_data = '''A,B,C,D
1.0,2.0,,4.0
5.0,6.0,,
9.0,10.0,11.0,12.0'''
df = pd.read_csv(StringIO(csv_data))
print(df)
import missingno as msno
msno.matrix(df)
plt.show()
print(df.isnull())
#如果是缺失值返回True,否则返回False
print(df.isnull().sum())
#返回每列包含的缺失值的个数
print(df.dropna())
#删除含有缺失值的行
print(df.dropna(axis = 1))
#删除含有缺失值的列
print(df.dropna(how = 'all'))
#删除全为缺失值NA的行
print(df.dropna(thresh = 3))
#保留至少有3个非NA值的观测的行
print(df.dropna(subset = ['D']))
#删除含有缺失值的特定的列,subset通过表头来定位
print(df.fillna(0))
#用某个常数填充
print(df.fillna(method='ffill'))
#用上一行的数值填充(可用axis参数按列填充)
#因第一行第三列数值为缺失值,故第三列的两个缺失值无法通过此方法补全
print(df.fillna(method='bfill'))
#用下一行的数值填充(可用axis参数按列填充)
print(df.fillna(df.mean()))
#用该列均值填充,中位数为median(),众数为mode()
print(df.fillna({'C':10.0,'D':-1}))
#通过字典实现对不同的列填充不同值