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

Python Pandas – 欠損している列の値をモード(最頻値)で埋める方法

モード(最頻値)とは、データの集合の中で最も多く出現する値のことです。Pandasではfillna()メソッドにモードを指定することで、欠損値(NaN)をその列の最頻値で補完できます。

必要なライブラリのインポート

まず、必要なライブラリをそれぞれ別名(エイリアス)付きでインポートしましょう。

import pandas as pd
import numpy as np

DataFrameの作成

次に、「Car」と「Units」の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]
    }
)

モードで欠損値を埋める

ここでは「Units」列のようにNaNを含む列の値からモードを求めます。mode()メソッドをUnits列に適用し、その結果を使って同じ列内のNaNを置き換えます。

dataFrame.fillna(dataFrame['Units'].mode()[0], inplace = True)

ポイント: mode()はSeries型で複数の最頻値を返す可能性があるため、[0]を付けて最初の要素(最も頻度の高い値)を取得しています。また、inplace=Trueを指定することで、元のDataFrameが直接更新されます。

完全なコード例

以下が全体のコードです。

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列)のモードを求める
# 各NaNを、それが存在する列のモードで置き換える
dataFrame.fillna(dataFrame['Units'].mode()[0], 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     80.0
3   Mustang    80.0
4   Bentley    80.0
5   Mustang    80.0

このように、Units列のモードである80.0が、すべてのNaN値に自動的に代入されていることが確認できます。

  1. 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

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

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