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