【Python】pandasでNaN値を平均値で埋める方法
pandasで欠損値(NaN)を平均値で埋めるには、mean()関数とfillna()関数を組み合わせて使用します。まずmean()で該当する列の平均値を計算し、その値をfillna()に渡すことで、NaNを平均値で置き換えることができます。
必要なライブラリのインポート
はじめに、必要なライブラリをインポートします。
import pandas as pd
import numpy as np
NaN値を含むDataFrameの作成
次に、2つの列を持つDataFrameを作成し、numpyのnp.NaNを使って意図的にNaN値を挿入します。
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],
"Units": [100, 150, np.NaN, 80, np.NaN, np.NaN]
}
)
列の平均値を計算する
ここでは、NaNを含む「Units」列の平均値を求めます。Units列には100、150、80という数値が含まれているため、平均値は110になります。
meanVal = dataFrame['Units'].mean()
NaNを平均値で置き換える
fillna()メソッドを使って、NaNをその列の平均値で置き換えます。先ほど計算した平均値は110なので、すべてのNaNが110に置き換えられます。
dataFrame['Units'].fillna(value=meanVal, inplace=True)
完全なコード例
以下に、ここまでの手順をまとめた完全なコードを示します。
import pandas as pd
import numpy as np
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],
"Units": [100, 150, np.NaN, 80, np.NaN, np.NaN]
}
)
print("DataFrame ...\n", dataFrame)
# NaNを含むUnits列の平均値を計算
# Units列には100、150、80が含まれるため、平均値は110になる
meanVal = dataFrame['Units'].mean()
# NaNをその列の平均値で置き換える
# 計算された平均値は110なので、NaNは110に置き換えられる
dataFrame['Units'].fillna(value=meanVal, inplace=True)
print("\nNaNを平均値で埋めた後のDataFrame ...\n", dataFrame)
実行結果
このコードを実行すると、以下のような出力が得られます。
DataFrame ...
Car Units
0 BMW 100.0
1 Lexus 150.0
2 Lexus NaN
3 Mustang 80.0
4 Bentley NaN
5 Mustang NaN
NaNを平均値で埋めた後のDataFrame ...
Car Units
0 BMW 100.0
1 Lexus 150.0
2 Lexus 110.0
3 Mustang 80.0
4 Bentley 110.0
5 Mustang 110.0
このように、mean()とfillna()を組み合わせることで、欠損値を簡単に平均値で補完できます。なお、近年のpandasのバージョンではinplace=Trueの使用が推奨されていないため、dataFrame['Units'] = dataFrame['Units'].fillna(meanVal)のように結果を代入する書き方にしておくと、より安全で将来性のあるコードになります。
-
Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\
-
MatplotlibでNaN値を含むデータをプロット・操作する方法を解説
MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp