import os
import pandas as pd
import numpy as np
os.chdir(‘D:\Workspaces\Jupyter’)
df = pd.read_excel(‘data_test.xlsx’)
每一列所有的缺失值数目和
np.sum(df.isnull())
返回值是TRUE的缺失
df.isnull()
每一列缺失数目
np.sum(df.isnull(),axis = 0)
每一行缺失数目
np.sum(df.isnull(),axis = 1)
每一列的缺失率
df.apply(lambda x:sum(x.isnull())/len(x),axis=0)
每一行的缺失率
df.apply(lambda x:sum(x.isnull())/len(x),axis=1)
只要有缺失,就删除,按行
df.dropna()
第二种表达
df.dropna(how = ‘any’,axis=0)
按列删除
df.dropna(how = ‘any’,axis=1)
这一列全缺失才删除
df.dropna(how = ‘all’,axis=1)
删除某一列
df.drop(‘TeamID’,axis=1)
删除多列
df.drop([‘TeamID’,‘EventTime’],axis=1)
按行删除这两列有缺失的数据
df.dropna(subset = [‘EventTime’,‘EventOrigin_x’],how =‘any’)
填上平均值,两点之间是列名
df.EventOrigin_x.fillna(df.EventOrigin_x.mean())
填上中位数
df.EventOrigin_x.fillna(df.EventOrigin_x.median())
填上众数,可以用来填不是数值的缺失,比如性别
df.EventOrigin_x.fillna(df.EventOrigin_x.mode())
这一列有多个众数取第一个
df.EventOrigin_x.fillna(df.EventOrigin_x.mode()[0])
所有的缺失值都用20填补
df.fillna(20)
不同的列补充不一样的内容
df.fillna(value ={‘EventType’:df.EventType.mode()[0],
‘EventTime’:df.EventTime.mean()})
从上往下,每次填补都和前一项相同
df.fillna(method=‘ffill’)
从下至上,每一项都和下一项相同
df.fillna(method=‘bfill’)
线性插值法
df.EventTime.interpolate(method = ‘linear’)
二次多项式插值
df.EventTime.interpolate(method = ‘polynomial’,order = 2)