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メソッドを使用する際のいくつかの注意点と、他の補完方法について説明します。

注意点

  1. 元のデータフレームは変更されませんfillnaメソッドは元のデータフレームを変更せず、新しいデータフレームを返します。元のデータフレームを直接変更したい場合は、inplace=Trueオプションを使用します。

    python
    df.fillna(0, inplace=True)

  2. 補完する列にも欠損値がある場合:補完する列にも欠損値が含まれている場合、その欠損値は補完されません。このような場合、欠損値を持つ列を先に補完するか、他の補完方法を検討する必要があります。

他の補完方法

Pandasでは、fillnaメソッド以外にも欠損値を補完するための方法が提供されています。

  1. ffillメソッドffillメソッドを使用すると、欠損値を前の値で補完することができます。これは時系列データなどで便利です。

    python
    df.ffill()

  2. bfillメソッドbfillメソッドを使用すると、欠損値を後ろの値で補完することができます。

    python
    df.bfill()

  3. interpolateメソッドinterpolateメソッドを使用すると、欠損値を前後の値の平均で補完することができます。これは数値データで有効です。

    python
    df.interpolate()

以上のように、Pandasではさまざまな方法で欠損値を補完することが可能です。データの性質や目的に応じて、最適な補完方法を選択しましょう。

投稿者 kitagawa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です