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.啥啥啥的

 

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