Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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)のように結果を代入する書き方にしておくと、より安全で将来性のあるコードになります。

  1. Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法

    はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\

  2. MatplotlibでNaN値を含むデータをプロット・操作する方法を解説

    MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp