首頁 > 軟體

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

2022-07-16 18:01:13

使用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)

執行結果:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com