Jupyter 缺失值处理

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)

# !!!重要的是这些都是返回视图,真实数据没有改变,需要加上df = df.啥啥啥的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章