最終更新日:2021/9/3
欠損値を指定した値で埋める方法を説明します。欠損値の削除は別のページで扱います。
【説明すること】
- 1. 特定の値で埋める
- 1.1 同じ値で埋める :
df.fillna(0, inplace = True)
- 1.2 列ごとに違う値を指定する:
df.fillna({'clm0':0, 'clm1':1}, inplace = True)
- 1.1 同じ値で埋める :
- 2. 前後の値で埋める
- 2.1 前の値で埋める :
df.fillna( method='ffill', inplace=True)
- 2.2 後ろの値で埋める:
df.fillna( method='bfill', inplace=True)
- 2.1 前の値で埋める :
- 3. ダイナミック(動的)にカラムを指定して埋めたい場合
1. 特定の値で埋める
特定の値で埋める場合です。df.fillna()
を使います。df全てを対象に、全て同じ値で埋める場合、カラム(列)を指定して、列ごとに異なる値を指定する場合、それぞれについて説明します。
1.1 同じ値で埋める
全ての欠損値を同じ値で埋める場合は、
df.fillna(0, inplace = True)
と書きます。引数の0は、任意の値が指定可能です。inplace=True
は元のdfを上書きするオプションです。Trueで上書きします。
以下の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で埋める場合
カラムを書き直す場合