fillnaメソッドの基本的な使い方
Pandasのfillna
メソッドは、データフレーム内の欠損値(NaN)を指定した値で補完するためのメソッドです。基本的な使い方は以下の通りです。
df.fillna(value)
ここで、df
は対象のデータフレーム、value
は欠損値を補完するための値です。value
にはスカラー値(単一の値)を指定することも、列ごとの値を指定することも可能です。
例えば、全ての欠損値を0で補完する場合は以下のようにします。
df.fillna(0)
一方、列ごとに異なる値で補完したい場合は、辞書型で値を指定します。以下の例では、列Aの欠損値は0、列Bの欠損値は1で補完しています。
df.fillna({'A': 0, 'B': 1})
このように、fillna
メソッドを使うことで、データフレーム内の欠損値を柔軟に補完することが可能です。ただし、元のデータフレームは変更されず、新しいデータフレームが返される点に注意が必要です。元のデータフレームを直接変更したい場合は、inplace=True
オプションを使用します。
df.fillna(0, inplace=True)
別の列の値で欠損値を補完する例
Pandasのfillna
メソッドを使って、ある列の欠損値を別の列の値で補完することも可能です。以下に具体的な例を示します。
まず、以下のようなデータフレームを考えます。
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, np.nan, 3, 4, np.nan],
'B': [5, 6, 7, np.nan, 9],
'C': [10, 11, 12, 13, 14]
})
このデータフレームでは、列Aと列Bに欠損値が含まれています。列Aの欠損値を列Cの同じ行の値で補完したいとします。その場合、以下のようにfillna
メソッドを使用します。
df['A'].fillna(df['C'])
これにより、列Aの欠損値が列Cの同じ行の値で補完された新しいシリーズが返されます。元のデータフレームを直接変更したい場合は、以下のようにします。
df['A'].fillna(df['C'], inplace=True)
このように、fillna
メソッドを使うことで、ある列の欠損値を別の列の値で補完することが可能です。ただし、補完する列にも欠損値が含まれている場合、その欠損値は補完されませんので注意が必要です。また、元のデータフレームは変更されず、新しいデータフレームが返される点にも注意が必要です。元のデータフレームを直接変更したい場合は、inplace=True
オプションを使用します。
fillnaメソッドの注意点と他の補完方法
Pandasのfillna
メソッドを使用する際のいくつかの注意点と、他の補完方法について説明します。
注意点
-
元のデータフレームは変更されません:
fillna
メソッドは元のデータフレームを変更せず、新しいデータフレームを返します。元のデータフレームを直接変更したい場合は、inplace=True
オプションを使用します。python
df.fillna(0, inplace=True) -
補完する列にも欠損値がある場合:補完する列にも欠損値が含まれている場合、その欠損値は補完されません。このような場合、欠損値を持つ列を先に補完するか、他の補完方法を検討する必要があります。
他の補完方法
Pandasでは、fillna
メソッド以外にも欠損値を補完するための方法が提供されています。
-
ffillメソッド:
ffill
メソッドを使用すると、欠損値を前の値で補完することができます。これは時系列データなどで便利です。python
df.ffill() -
bfillメソッド:
bfill
メソッドを使用すると、欠損値を後ろの値で補完することができます。python
df.bfill() -
interpolateメソッド:
interpolate
メソッドを使用すると、欠損値を前後の値の平均で補完することができます。これは数値データで有効です。python
df.interpolate()
以上のように、Pandasではさまざまな方法で欠損値を補完することが可能です。データの性質や目的に応じて、最適な補完方法を選択しましょう。