python筆記之使用fillna()填充缺失值

使用fillna()填充缺失值

df = pd.read_csv('ccf_offline_stage1_train.csv')
print(df['Distance'])
df['distance'] = df['Distance'].fillna(-1).astype(int)
print(df['distance'])

結果太長不展示瞭,經過操作後成功將dataframe中distance列的缺失值都變成瞭-1

關於fillna()函數詳解

inplace參數的取值:True、False

  • True:直接修改原對象
  • False:創建一個副本,修改副本,原對象不變(缺省默認)

method參數的取值 : {‘pad’, ‘ffill’,‘backfill’, ‘bfill’, None}, default None

  • pad/ffill:用前一個非缺失值去填充該缺失值
  • backfill/bfill:用下一個非缺失值填充該缺失值
  • None:指定一個值去替換缺失值(缺省默認這種方式)

limit參數:限制填充個數

axis參數:修改填充方向

#導包
import pandas as pd
import numpy as np
from numpy import nan as NaN
df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])
df1

代碼結果:

一、不指定任何參數

1.  用常數填充

#一、不指定method參數
 
#1.用常數填充
print (df1.fillna(100))
print ("-----------------------")
print (df1)

運行結果:

2.  用字典填充

#2.用字典填充
df1.fillna({0:10,1:20,2:30})

運行結果:

二、指定inplace參數

#二、指定inplace參數
 
print (df1.fillna(0,inplace=True))
print ("-------------------------")
print (df1)

運行結果:

三、指定method參數

1.method = 'ffill'/'pad':用前一個非缺失值去填充該缺失值

#三、指定method參數
 
df2 = pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3] = NaN
df2.iloc[2:4,4] = NaN
df2

運行結果:

#1.method = 'ffill'/'pad':用前一個非缺失值去填充該缺失值
 
df2.fillna(method='ffill')

運行結果:

2.method = 'bflii'/'backfill':用下一個非缺失值填充該缺失值

#2.method = 'bflii'/'backfill':用下一個非缺失值填充該缺失值
 
df2.fillna(method='bfill')

運行結果:

四、指定limit參數

#四、指定limit參數
 
#用下一個非缺失值填充該缺失值
#隻填充2個
 
df2.fillna(method='bfill', limit=2)

運行結果: 

五、指定axis參數

#五、指定axis參數
 
df2.fillna(method="ffill", limit=1, axis=1)

運行結果:

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: