【Python・Pandas】欠損値(NaN)を中央値で埋める方法をわかりやすく解説
中央値(メジアン)とは、データを昇順に並べたときに中央に位置する値のことで、データ全体を「上半分」と「下半分」に分ける基準となる統計量です。外れ値の影響を受けにくいため、欠損値(NaN)の補完方法として平均値よりも適しているケースが多くあります。
Pandasでは、fillna() メソッドを使い、引数に median() の結果を指定することで、欠損している列の値を簡単に中央値で埋めることができます。
1. 必要なライブラリをインポートする
まずは、PandasとNumPyをそれぞれ別名(エイリアス)付きでインポートします。
import pandas as pd import numpy as np
2. 欠損値を含むDataFrameを作成する
次に、「Car」と「Units」の2列を持つDataFrameを作成します。ここではNumPyの np.nan を使って、意図的に欠損値を含めています。
dataFrame = pd.DataFrame(
{
"Car": ['Lexus', 'BMW', 'Audi', 'Bentley', 'Mustang', 'Tesla'],
"Units": [100, 150, np.nan, 80, np.nan, np.nan]
}
)この時点では、「Units」列に3つのNaNが含まれています。
3. 中央値で欠損値を埋める
「Units」列に対して median() を呼び出して中央値を求め、その結果を fillna() に渡すことで、同じ列内のNaNをすべて中央値で置き換えられます。
dataFrame.fillna(dataFrame['Units'].median(), inplace=True)
ポイント: この例の場合、欠損値以外の値は 100、150、80 の3つなので、中央値は 100 となります。そのため、すべてのNaNが100で補完されます。
※ Pandasの新しいバージョンではinplace=Trueは非推奨となっています。以下のように代入形式で書くのがおすすめです。dataFrame['Units'] = dataFrame['Units'].fillna(dataFrame['Units'].median())
サンプルコード(完全版)
以下に、一連の処理をまとめたコード全体を示します。
import pandas as pd
import numpy as np
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Car": ['Lexus', 'BMW', 'Audi', 'Bentley', 'Mustang', 'Tesla'],
"Units": [100, 150, np.nan, 80, np.nan, np.nan]
}
)
print("DataFrame ...\n", dataFrame)
# NaNを含む「Units」列の中央値を求め、欠損値を置き換える
dataFrame.fillna(dataFrame['Units'].median(), inplace=True)
print("\n中央値でNaNを埋めた後のDataFrame...\n", dataFrame)実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
Car Units
0 Lexus 100.0
1 BMW 150.0
2 Audi NaN
3 Bentley 80.0
4 Mustang NaN
5 Tesla NaN
中央値でNaNを埋めた後のDataFrame...
Car Units
0 Lexus 100.0
1 BMW 150.0
2 Audi 100.0
3 Bentley 80.0
4 Mustang 100.0
5 Tesla 100.0まとめ
このように、fillna() と median() を組み合わせることで、数値列の欠損値を中央値で効率的に補完できます。中央値による補完は、極端な外れ値が含まれるデータセットにおいて、平均値での補完よりも頑健な結果をもたらすため、実務のデータ前処理でも広く使われる手法です。ぜひ活用してみてください。
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa
-
Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\