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関数と辞書の使用
values = {'A': 0, 'B': 1, 'C': 2}
df.fillna(value=values, inplace=True)

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

このコードでは、データフレームdfの各列の欠損値が、辞書valuesに定義された値で置換されます。具体的には、列’A’の欠損値は0で、列’B’の欠損値は1で、列’C’の欠損値は2で置換されます。

このように、fillna関数と辞書を組み合わせることで、データフレームの欠損値を柔軟に制御することが可能になります。次のセクションでは、より具体的な使用例を見ていきましょう。

具体的な使用例

次に、より具体的な使用例を見てみましょう。ここでは、異なる列に対して異なる補完方法を適用する方法を示します。

import pandas as pd
import numpy as np

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

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

# fillna関数と辞書の使用
values = {'A': df['A'].mean(), 'B': df['B'].median(), 'C': df['C'].mode()[0]}
df.fillna(value=values, inplace=True)

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

このコードでは、データフレームdfの各列の欠損値が、辞書valuesに定義された値で置換されます。具体的には、列’A’の欠損値はその列の平均値で、列’B’の欠損値はその列の中央値で、列’C’の欠損値はその列の最頻値で置換されます。

このように、fillna関数と辞書を組み合わせることで、データフレームの欠損値を柔軟に制御することが可能になります。次のセクションでは、より大きなデータセットでの効果的な使用法を見ていきましょう。

より大きなデータセットでの効果的な使用法

大規模なデータセットに対して fillna 関数と辞書を使用する場合、パフォーマンスと効率性が重要になります。以下に、大規模なデータセットで fillna 関数と辞書を効果的に使用する一例を示します。

import pandas as pd
import numpy as np

# 大規模なデータフレームの作成
np.random.seed(0)
df = pd.DataFrame({
    'A': np.random.randn(10000),
    'B': np.random.randn(10000),
    'C': np.random.randn(10000)
})

# データフレームの一部に欠損値を作成
for col in ['A', 'B', 'C']:
    df.loc[df.sample(frac=0.1).index, col] = np.nan

print("Number of missing values:")
print(df.isnull().sum())

# fillna関数と辞書の使用
values = {col: df[col].mean() for col in df.columns}
df.fillna(value=values, inplace=True)

print("\nNumber of missing values after using fillna:")
print(df.isnull().sum())

このコードでは、大規模なデータフレーム df の各列の欠損値が、辞書 values に定義された値で置換されます。具体的には、各列の欠損値はその列の平均値で置換されます。

このように、fillna 関数と辞書を組み合わせることで、大規模なデータセットの欠損値を効率的に制御することが可能になります。このテクニックは、データの前処理や欠損値の補完において非常に有用です。

投稿者 kitagawa

コメントを残す

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