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)

このコードを実行すると、元のデータフレーム内のNaNが0に置き換えられた新しいデータフレームが出力されます。fillna メソッドは新しいデータフレームを返すため、元のデータフレームは変更されません。元のデータフレームを直接変更したい場合は、 fillna メソッドに inplace=True を指定します。ただし、この操作は元のデータを変更するため注意が必要です。

特定の列だけをfillnaする方法

特定の列だけをfillnaするには、その列を選択して 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)

# 'B'列だけをfillnaで0に置き換え
df['B'] = df['B'].fillna(0)

print("\nDataFrame after fillna on 'B':")
print(df)

このコードを実行すると、’B’列のNaNが0に置き換えられます。他の列は変更されません。このように、特定の列だけを選択してfillnaを適用することで、データフレームの一部だけを変更することができます。

複数の列を一度にfillnaする方法

複数の列を一度にfillnaするには、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)

# 'A'列のNaNを0、'B'列のNaNを-1で置き換え
df.fillna({'A': 0, 'B': -1}, inplace=True)

print("\nDataFrame after fillna on 'A' and 'B':")
print(df)

このコードを実行すると、’A’列のNaNが0に、’B’列のNaNが-1に置き換えられます。他の列は変更されません。このように、fillnaメソッドに辞書を渡すことで、複数の列を一度にfillnaすることができます。

NaNをリストで置き換える方法

Pandasの fillna メソッドを使ってNaNをリストで置き換えることは直接的にはできません。なぜなら、Pandasのデータフレームは一般的にスカラー値(数値、文字列など)を要素として持つためです。しかし、リストのような複数の値を持つ列を作成するためには、Pythonのリストを要素とする新しい列を作成し、その列に対して 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をリストで置き換え
df['A'] = df['A'].apply(lambda x: [0] if pd.isna(x) else x)

print("\nDataFrame after replacing NaN in 'A' with a list:")
print(df)

このコードを実行すると、’A’列のNaNがリスト [0] に置き換えられます。他の列は変更されません。このように、 apply メソッドと lambda 関数を組み合わせることで、NaNをリストで置き換えることができます。ただし、この方法は列の他の要素がスカラー値である場合には適用できません。列のすべての要素がリストである必要があります。

投稿者 kitagawa

コメントを残す

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