最終更新日:2021/9/3

欠損値を指定した値で埋める方法を説明します。欠損値の削除は別のページで扱います。

【説明すること】

1. 特定の値で埋める

特定の値で埋める場合です。df.fillna()を使います。df全てを対象に、全て同じ値で埋める場合、カラム(列)を指定して、列ごとに異なる値を指定する場合、それぞれについて説明します。

1.1 同じ値で埋める

全ての欠損値を同じ値で埋める場合は、

df.fillna(0, inplace = True)

と書きます。引数の0は、任意の値が指定可能です。
inplace=Trueは元のdfを上書きするオプションです。Trueで上書きします。

以下のcsvファイルを読み込んで例を挙げます。

a007_002.csv

1.2 列ごとに違う値を指定する

列ごとに値を指定する場合は、引数にディクショナリ―を指定して、

df.fillna({'clm0':0, 'clm1':1}, inplace = True)

と書きます。

2. 前後の値で埋める

行で見た場合に、前の値(上の値)または、後ろの値(下の値)で埋める方法です。

2.1 前の値で埋める

前の値(上の値)で埋める場合は、df.fillna()のオプションにmethod='ffill'を指定して、

df.fillna( method='ffill', inplace=True)

と書きます。ポイントは、ffillを”でくくって、'ffill'と書く点です。
inplace=Trueを指定すれば、元のdfを上書きします。

2.2 後ろの値で埋める

後ろの値(下の値)で埋める場合は、df.fillna()のオプションにmethod='bfill'を指定して、

df.fillna( method='bfill', inplace=True)

と書きます。同じく、'bfill'は”で、くくります。また、inplace=Trueを指定すれば、元のdfを上書きします。

3. ダイナミック(動的)にカラムを指定して埋めたい場合

for文を使ってダイナミック(動的)に、カラムを指定して欠損値を埋めたい場合の応用例です。
例えば、0番目のカラムは0を、1番目のカラムは1…という場合が考えられます。以下は、カラム番号を100倍した値で埋める例です。

inplace = Trueで埋める場合


カラムを書き直す場合