Pandas詳解十一之Fillna填充缺失數據

約定:
import pandas as pd
import numpy as np
from numpy import nan as NaN

填充缺失數據

fillna()是最主要的處理方式了。

df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])
df1
代碼結果:
0 1 2
0 1.0 2.0 3.0
1 NaN NaN 2.0
2 NaN NaN NaN
3 8.0 8.0 NaN
  • 用常數填充:
df1.fillna(100)
代碼結果:
0 1 2
0 1.0 2.0 3.0
1 100.0 100.0 2.0
2 100.0 100.0 100.0
3 8.0 8.0 100.0
  • 通過字典填充不同的常數:
df1.fillna({0:10,1:20,2:30})
代碼結果:
0 1 2
0 1.0 2.0 3.0
1 10.0 20.0 2.0
2 10.0 20.0 30.0
3 8.0 8.0 30.0
  • 傳入inplace=True直接修改原對象:
df1.fillna(0,inplace=True)
df1
代碼結果:
0 1 2
0 1.0 2.0 3.0
1 0.0 0.0 2.0
2 0.0 0.0 0.0
3 8.0 8.0 0.0
  • 傳入method=” “改變插值方式:
df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=NaN;df2.iloc[2:4,4]=NaN
df2
代碼結果:
0 1 2 3 4
0 6 6 2 4.0 1.0
1 4 7 0 NaN 5.0
2 6 5 5 NaN NaN
3 1 9 9 NaN NaN
4 4 8 1 5.0 9.0
df2.fillna(method='ffill')#用前面的值來填充
代碼結果:
0 1 2 3 4
0 6 6 2 4.0 1.0
1 4 7 0 4.0 5.0
2 6 5 5 4.0 5.0
3 1 9 9 4.0 5.0
4 4 8 1 5.0 9.0
  • 傳入limit=” “限制填充個數:
df2.fillna(method='bfill',limit=2)
代碼結果:
0 1 2 3 4
0 6 6 2 4.0 1.0
1 4 7 0 NaN 5.0
2 6 5 5 5.0 9.0
3 1 9 9 5.0 9.0
4 4 8 1 5.0 9.0
  • 傳入axis=” “修改填充方向:
df2.fillna(method="ffill",limit=1,axis=1)
代碼結果:
0 1 2 3 4
0 6.0 6.0 2.0 4.0 1.0
1 4.0 7.0 0.0 0.0 5.0
2 6.0 5.0 5.0 5.0 NaN
3 1.0 9.0 9.0 9.0 NaN
4 4.0 8.0 1.0 5.0 9.0

謝謝大家的瀏覽,
希望我的努力能幫助到您,
共勉!

發佈了48 篇原創文章 · 獲贊 181 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章