非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】Pandas/DataframeでNaNをゼロに置き換えるfillnaメソッド

   

Pandas/DataframeでNaNをゼロに置き換える方法について解説します。fillnaという便利なメソッドがあります。

NaNに遭遇する場面としては移動平均など前のデータを参照して計算する場合などがあります。NaNのままだと計算する際に不都合が出るケースがあるのでそんな時はfillnaメソッドを使ってゼロで埋めましょう。

まず一例として以下のように3データ分の移動平均を取ります。最初の2データにNaNが挿入されていることがわかります。

import pandas as pd

d = [4,5,6,7,8,4,5,7,7,1]
header = ['DATA']
df = pd.DataFrame(data=d, columns=header)
df['MA'] = df['DATA'].rolling(3).mean()
print(df)

#    DATA        MA
# 0     4       NaN
# 1     5       NaN
# 2     6  5.000000
# 3     7  6.000000
# 4     8  7.000000
# 5     4  6.333333
# 6     5  5.666667
# 7     7  5.333333
# 8     7  6.333333
# 9     1  5.000000
 

 

これを以下のようにfillna(0)で処理するとNaNにゼロが挿入されます。

 df['MA'] = df['MA'].fillna(0)

#    DATA        MA
# 0     4  0.000000
# 1     5  0.000000
# 2     6  5.000000
# 3     7  6.000000
# 4     8  7.000000
# 5     4  6.333333
# 6     5  5.666667
# 7     7  5.333333
# 8     7  6.333333
# 9     1  5.000000
 

 

 

スポンサーリンク

 - Python