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

Python・PandasのDataFrameをmerge()で左外部結合(Left Outer Join)する方法

Pandasで2つのDataFrameを結合(マージ)するには、merge()関数を使用します。左外部結合(Left Outer Join)を実行したい場合は、merge()関数の「how」パラメータに以下のように指定します。

how = "left"

左外部結合とは

左外部結合では、左側のDataFrameのすべての行が保持され、右側のDataFrameに一致するキーが存在しない行にはNaN(欠損値)が格納されます。データ分析において、片方のデータセットを基準にもう片方の情報を付け加えたい場合によく使われる結合方法です。

Pandasライブラリのインポート

まず、pandasライブラリをエイリアス付きでインポートします。

import pandas as pd

マージ用のDataFrameを作成する

次に、結合対象となる2つのDataFrameを作成しましょう。

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

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

ここでは、共通の列である「Car」をキーとして使用します。DataFrame1には車種と販売台数(Units)、DataFrame2には車種と登録価格(Reg_Price)が格納されています。

左外部結合を実行する

共通列「Car」を基準に、「how」パラメータに"left"を指定してmerge()を実行すると、左外部結合が実現されます。

mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="left")

サンプルコード全体

以下に完全なコードを示します。

import pandas as pd

# DataFrame1 を作成
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 150, 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)

# 共通列 Car をキーに、how="left" を指定して左外部結合
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="left")
print("\nMerged dataframe with left outer join...\n", mergedRes)

実行結果

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

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

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

Merged dataframe with left outer join...
       Car  Units  Reg_Price
0      BMW    100     7000.0
1    Lexus    150     1500.0
2     Audi    110        NaN
3  Mustang     80     8000.0
4  Bentley    110        NaN
5   Jaguar     90     6000.0

実行結果のポイント

出力結果を見ると、左側のDataFrame1に存在したすべての車種(BMW、Lexus、Audi、Mustang、Bentley、Jaguar)が結果に保持されていることがわかります。一方、右側のDataFrame2にのみ存在する「Tesla」と「Mercedes」は結果に含まれていません。

また、「Audi」と「Bentley」はDataFrame2に対応するデータがないため、Reg_Priceの値がNaNになっています。これが左外部結合の特徴です。なお、NaNが含まれることで列の型が浮動小数点型(float)に変換され、価格が「7000.0」のように表示される点にも注意してください。

  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 DataFrameからサブセット(列の一部)を選択する方法

    Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea