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

【Python】PandasのDataFrameを外部結合(Outer Join)でマージする方法

Pandasで複数のDataFrameを結合(マージ)するには、merge()関数を使用します。このとき、howパラメータに「outer」を指定すると、両方のDataFrameに対して外部結合(Outer Join)が実行されます。

how = "outer"

外部結合では、片方のDataFrameにしか存在しない行もすべて残され、対応する値がない部分は NaN で埋められます。

1. pandasライブラリのインポート

まず、pandasを別名(エイリアス)付きでインポートします。

import pandas as pd

2. DataFrame1の作成

車種と販売台数を含むDataFrameを作成します。

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

3. DataFrame2の作成

次に、車種と登録価格を含む別のDataFrameを作成します。

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

4. 外部結合によるマージの実行

共通の列「Car」をキーにし、howパラメータに「outer」を指定してマージすると、外部結合が実行されます。

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

サンプルコード全体

以下に、ここまでの手順をまとめた完全なコードを示します。

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="outer"を指定して外部結合でマージ
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="outer")
print("\nMerged dataframe with 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 outer join...
         Car   Units  Reg_Price
0      BMW   100.0     7000.0
1    Lexus   150.0     1500.0
2     Audi   110.0        NaN
3  Mustang    80.0     8000.0
4  Bentley   110.0        NaN
5   Jaguar    90.0     6000.0
6    Tesla     NaN     5000.0
7 Mercedes     NaN     9000.0

結果のポイント

出力結果から分かるように、外部結合では以下のような挙動になります。

  • AudiBentley はDataFrame1にのみ存在するため、Reg_Price 列が NaN になっています。
  • TeslaMercedes はDataFrame2にのみ存在するため、Units 列が NaN になっています。
  • 両方のDataFrameに存在する BMWLexusMustangJaguar の行は、データが統合された形で表示されます。

このように、pd.merge()how="outer" を指定することで、どちらか一方にしか存在しないデータも欠落させずに結合できます。SQLにおける FULL OUTER JOIN と同等の操作です。

  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