Pandas學習筆記 - fillna()填充缺失資料
阿新 • • 發佈:2018-12-19
使用fillna()函式填充缺失值
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(7,4)) df.loc[:4,1] = np.nan df.loc[:2,2] = np.nan df.loc[0,:] = np.nan df ''' 0 1 2 3 0 NaN NaN NaN NaN 1 -1.198558 NaN NaN 0.227038 2 0.569026 NaN NaN -0.685095 3 -1.349993 NaN -1.715748 -0.345816 4 -1.324344 NaN 0.755861 -0.003945 5 -1.089520 0.999640 -1.011059 1.030057 6 0.578654 -0.003776 0.820553 -2.133620 ''' # 用一個數字填充缺失值 df.fillna(0) # 用前一個數據代替缺失值:method='pad';用後一個數據代替缺失值:method='bfill' df.fillna(method = 'bfill') # 用一個字串代替缺失值 df.fillna('unknown') # 使用描述性統計的值代替缺失值,例如使用平均值代替缺失資料 df.fillna(df.mean())
根據不同的列進行缺失值處理
# 使用字典呼叫fillna,可以實現對不同的列填充不同的值 df.fillna({1:0.5,3:-1}) ''' 0 1 2 3 0 NaN 0.500000 NaN -1.000000 1 -1.198558 0.500000 NaN 0.227038 2 0.569026 0.500000 NaN -0.685095 3 -1.349993 0.500000 -1.715748 -0.345816 4 -1.324344 0.500000 0.755861 -0.003945 5 -1.089520 0.999640 -1.011059 1.030057 6 0.578654 -0.003776 0.820553 -2.133620 ''' # 選擇對哪些列進行缺失值的處理 df.fillna(df.mean()[:2]) # 用limit限制每列可以替代缺失值的最大數目 df.fillna('unknown',limit = 1)
fillna預設返回新物件,可以使用inplace引數實現對現有物件進行直接修改
# inplace引數:修改呼叫者物件而不產生副本
_ = df.fillna(0,inplace=True)
df
'''
0 1 2 3
0 0.000000 0.000000 0.000000 0.000000
1 -1.198558 0.000000 0.000000 0.227038
2 0.569026 0.000000 0.000000 -0.685095
3 -1.349993 0.000000 -1.715748 -0.345816
4 -1.324344 0.000000 0.755861 -0.003945
5 -1.089520 0.999640 -1.011059 1.030057
6 0.578654 -0.003776 0.820553 -2.133620
'''