fillnaの基本的な使い方

Pandasのfillna()メソッドは、データフレーム内の欠損値(NaN)を指定した値で埋めるためのメソッドです。以下に基本的な使い方を示します。

import pandas as pd
import numpy as np

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [5, np.nan, np.nan],
    'C': [1, 2, 3]
})

print("Original DataFrame:")
print(df)

# fillnaを使用してNaNを0で埋める
df_filled = df.fillna(0)

print("\nDataFrame after fillna:")
print(df_filled)

このコードを実行すると、以下のような出力が得られます。

Original DataFrame:
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3

DataFrame after fillna:
     A    B  C
0  1.0  5.0  1
1  2.0  0.0  2
2  0.0  0.0  3

このように、fillna()メソッドを使用すると、データフレーム内のすべてのNaN値が指定した値(この場合は0)で置き換えられます。これは、データ分析を行う際に欠損値を扱う一つの方法です。ただし、どの値で欠損値を埋めるかは、分析の目的やデータの性質によります。そのため、適切な値を選択することが重要です。また、fillna()メソッドには他にも様々なオプションがあり、それらを利用することでより柔軟な欠損値の扱いが可能になります。それらの詳細については、次のセクションで説明します。

列ごとに異なる値でNaNを埋める

Pandasのfillna()メソッドは、列ごとに異なる値で欠損値を埋めることも可能です。これは、各列が異なる種類のデータ(例えば、一部は年齢、一部は収入など)を表している場合に特に有用です。以下にその方法を示します。

import pandas as pd
import numpy as np

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [5, np.nan, np.nan],
    'C': [1, 2, 3]
})

print("Original DataFrame:")
print(df)

# 列ごとに異なる値でfillnaを使用
df_filled = df.fillna({
    'A': 0,
    'B': 1,
    'C': 2
})

print("\nDataFrame after fillna:")
print(df_filled)

このコードを実行すると、以下のような出力が得られます。

Original DataFrame:
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3

DataFrame after fillna:
     A    B  C
0  1.0  5.0  1
1  2.0  1.0  2
2  0.0  1.0  3

このように、fillna()メソッドに辞書を渡すことで、各列ごとに異なる値で欠損値を埋めることができます。この機能は、各列のデータの性質に応じて適切な値を選択することを可能にします。ただし、すべての列で欠損値を埋める値が指定されていない場合、その列の欠損値は埋められません。そのため、すべての列で欠損値を埋めたい場合は、辞書にすべての列名と値を含める必要があります。また、fillna()メソッドには他にも様々なオプションがあり、それらを利用することでより柔軟な欠損値の扱いが可能になります。それらの詳細については、次のセクションで説明します。

他の列の値でNaNを埋める

Pandasのfillna()メソッドは、他の列の値を使用して欠損値を埋めることも可能です。これは、特定の列の欠損値をその列の平均値や中央値、あるいは他の列の値で埋めたい場合に特に有用です。以下にその方法を示します。

import pandas as pd
import numpy as np

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [5, np.nan, np.nan],
    'C': [1, 2, 3]
})

print("Original DataFrame:")
print(df)

# 'A'列のNaNを'B'列の値で埋める
df['A'].fillna(df['B'], inplace=True)

print("\nDataFrame after fillna:")
print(df)

このコードを実行すると、以下のような出力が得られます。

Original DataFrame:
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3

DataFrame after fillna:
     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  5.0  NaN  3

このように、fillna()メソッドに他の列を渡すことで、その列の値で欠損値を埋めることができます。ただし、この方法を使用する際には注意が必要です。もし埋める値が提供される列にも欠損値が存在する場合、その欠損値は埋められません。そのため、この方法を使用する前に、提供される列に欠損値がないことを確認するか、あるいは他の方法で欠損値を埋める必要があります。また、fillna()メソッドには他にも様々なオプションがあり、それらを利用することでより柔軟な欠損値の扱いが可能になります。それらの詳細については、次のセクションで説明します。

fillnaのその他のオプション

Pandasのfillna()メソッドは、欠損値を埋めるための非常に強力なツールであり、多くのオプションを提供しています。以下に、そのいくつかを紹介します。

methodオプション

fillna()メソッドのmethodオプションを使用すると、欠損値を前後の値で埋めることができます。methodにはffillまたはbfillを指定します。

  • ffill: 前の値で欠損値を埋めます。
  • bfill: 後の値で欠損値を埋めます。
import pandas as pd
import numpy as np

# データフレームを作成
df = pd.DataFrame({
    'A': [1, np.nan, 2],
    'B': [5, np.nan, np.nan],
    'C': [1, 2, 3]
})

print("Original DataFrame:")
print(df)

# 'ffill'を使用してNaNを埋める
df_ffill = df.fillna(method='ffill')

print("\nDataFrame after fillna with 'ffill':")
print(df_ffill)

# 'bfill'を使用してNaNを埋める
df_bfill = df.fillna(method='bfill')

print("\nDataFrame after fillna with 'bfill':")
print(df_bfill)

limitオプション

fillna()メソッドのlimitオプションを使用すると、連続する欠損値を埋める最大数を指定することができます。

import pandas as pd
import numpy as np

# データフレームを作成
df = pd.DataFrame({
    'A': [1, np.nan, np.nan, 2],
    'B': [5, np.nan, np.nan, np.nan],
    'C': [1, 2, 3, 4]
})

print("Original DataFrame:")
print(df)

# limitを使用してNaNを埋める
df_limit = df.fillna(0, limit=1)

print("\nDataFrame after fillna with limit:")
print(df_limit)

これらのオプションを組み合わせることで、さまざまな状況に対応する柔軟な欠損値の扱いが可能になります。ただし、どのオプションを使用するか、またそのパラメータは、データの性質や分析の目的によります。そのため、適切な選択をすることが重要です。また、欠損値の扱いには他にもさまざまな方法がありますので、それらを検討することもおすすめします。それらの詳細については、次のセクションで説明します。

投稿者 kitagawa

コメントを残す

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