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

【Python・Pandas】merge()関数でDataFrameを多対1(m:1)の関係でマージする方法

PandasでDataFrame同士を結合(マージ)するには、merge()関数を使用します。多対1(many-to-one)の関係でマージしたい場合は、merge()関数のvalidateパラメータに以下のいずれかの値を指定します。

validate = "many_to_one"
または
validate = "m:1"

「m:1」を指定すると、マージキーが右側のデータセット(第2引数に渡したDataFrame)で一意であるかどうかが検証されます。万が一、右側のキーに重複が存在した場合にはエラーが発生するため、意図しないデータの膨張や不整合を未然に防ぐチェック機能としても活用できます。

DataFrame1の作成

まず、1つ目のDataFrameを作成します。ここでは車種(Car)と販売台数(Units)を持つデータを用意します。

dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 110, 80, 110, 90]
    }
)

DataFrame2の作成

次に、2つ目のDataFrameを作成します。こちらは車種(Car)と登録価格(Reg_Price)を持つデータです。

dataFrame2 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)

サンプルコード

以下は、validateパラメータに「many_to_one」を指定して、多対1の関係で2つのDataFrameをマージする完全なコード例です。

#
# 多対1の関係でPandas DataFrameをマージする
#

import pandas as pd

# DataFrame1を作成
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 110, 80, 110, 90]
    }
)

print("DataFrame1 ...\n", dataFrame1)

# DataFrame2を作成
dataFrame2 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)

print("\nDataFrame2 ...\n", dataFrame2)

# validateパラメータに"many_to_one"を指定してマージ
mergedRes = pd.merge(dataFrame1, dataFrame2, validate="many_to_one")
print("\n多対1の関係でマージしたDataFrame...\n", mergedRes)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

DataFrame1 ...
       Car  Units
0      BMW    100
1     Audi    110
2   Mustang     80
3  Bentley    110
4   Jaguar     90

DataFrame2 ...
        Car  Reg_Price
0       BMW       7000
1     Lexus       1500
2     Tesla       5000
3   Mustang       8000
4   Mercedes      9000
5    Jaguar       6000

多対1の関係でマージしたDataFrame...
       Car  Units  Reg_Price
0      BMW    100       7000
1   Mustang     80       8000
2    Jaguar     90       6000

まとめ

merge()関数のvalidateパラメータに「many_to_one」または「m:1」を指定することで、左側のDataFrameのキーが右側で一意であることが保証され、安全に多対1のマージを行えます。両方のDataFrameで共通するキー(この例ではBMW・Mustang・Jaguar)のみが結合されるため、データ分析の前処理においても信頼性の高い結合処理を実現できます。

  1. PythonのMatplotlibでPandas DataFrameのヒストグラムを描画する方法

    ヒストグラムとは、データの分布を視覚的に表現したグラフです。PandasのDataFrameからヒストグラムを作成するには、Matplotlibのhist()メソッドを使用します。この記事では、具体的なコード例とともに、その手順をわかりやすく解説します。必要なライブラリのインポートまず、PandasとMatplotlibの2つのライブラリをインポートします。import pandas as pd import matplotlib.pyplot as pltDataFrameの作成次に、「Car(車名)」と「Reg_Price(登録価格)」の2つの列を持つDataFrameを作成します。dat

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