PandasのDataFrameを結合する方法4つ|concat,append,merge,joinを解説

スポンサーリンク

この記事では、PythonでDataFrameを組み合わせるための様々な方法を学びます。


スポンサーリンク

PythonのDataFrameって何?

Pythonでは、DataFrameは構造化された2次元のPythonオブジェクトで、表形式、すなわち行と列を使用してデータを格納するために使用されます。

DataFrameを扱うには、Pythonのモジュールである pandas が必要です。

リスト、辞書、NumPy ndarray、別のDataFrameなどの様々なPythonオブジェクトから、 pandas.DataFrame() 関数を使用してPandas DataFrameを作成することができます。

以下は、Pythonモジュール pandas をインストールするためのコマンドです。

C:UsersGuest> pip install pandas

それでは、これから説明する2つの pandas DataFrame を作成してみましょう。

pandasのDataFrameを作成するPythonコードです。

# Import pandas Python module
import pandas as pd
 
# Create two datasets using dictionary of list
data1 = {"name": ['Sanjay Kumar', 'Shreya Mohan', 'Abhishek Kumar', 'Sameer Singh', 'Sumit Kumar'],
        "roll_no": [101, 102, 103, 104, 105]}
 
data2 = {"state": ['Bihar', 'Jharkhand', 'Maharashtra', 'Haryana', 'Punjab'],
        "City": ['Nalanda', 'Deoghar', 'Pune', 'Kunjpura', 'Jalandhar']}
 
# Create DataFrame-1
df1 = pd.DataFrame(data1)
print("This is DataFrame-1:")
print(df1)
 
# Create DataFrame-2
df2 = pd.DataFrame(data2)
print("This is DataFrame-2:")
print(df2)

結果は以下の通りです。

# Combine the DataFrame-1 & DataFrame-2
# along horizontal axis using concat() function
df = pd.concat([df1, df2], axis = 1)
print("The resultant DataFrame:")
print(df)

PythonでDataFrameを結合するメソッド

2つ以上のDataFrameをどちらかの軸に沿って結合するプロセスは、データ分析で使用されるコアなデータ前処理技術の1つです。

データサイエンティストやデータアナリストは、pandasのDataFrameの形で存在するデータを様々な方法を用いて頻繁に結合しなければなりません。

複数のソースから異なるデータを収集し、異なるフォーマットで保存している場合、これはデータ分析中に実行する非常に重要なステップになります。

2つのpandas DataFrameを作成したので、PythonでDataFrameを結合するための様々な方法を一つずつ説明していきましょう。

方法1: concat() 関数を使用する

Pythonでは、pandasモジュールに concat() 関数が定義されており、指定した軸に沿って2つ以上のpandas DataFrameを結合するために使用されます。

Axis = 0 は縦軸、axis = 1 は横軸を意味します。

それらを連結することで、この関数は新しい DataFrame オブジェクトを返します。

これは、あるDataFrameの行または列を別のDataFrameに結合するのに使うことができます。

それでは、pandasのDataFrameに対して concat() 関数を実装するPythonコードを書いてみましょう。

# Create a new DataFrame-3
df3 = pd.DataFrame({"name": ['Ravi', 'Shantanu', 'Shiv'],
                    "roll_no": [106, 107, 108],
                    "state": ['Bihar', 'UP', 'Bihar'],
                    "City": ['Muzaffarpur', 'Agra', 'Bakhtiarpur']},
                    index = [5, 6, 7])
print("This is DataFrame-3:")
print(df3)
 
# Combine this newly created DataFrame-3
# to the existing DataFrame along vertical axis
# using append() function
df = df.append(df3)
print("The resultant DataFrame:")
print(df)

結果は以下の通りです。

# Create a new DataFrame-4
df4 = pd.DataFrame({"roll_no": [101, 102, 103, 104, 105, 106, 107, 108],
                    "cgpa": [8.15, 8.18, 9.41, 8.56, 7.67, 9.36, 9.52, 7.35]})
print("This is DataFrame-4:")
print(df4)
 
# Combine this newly created DataFrame-3
# to the existing DataFrame along horizontal axis
# using merge() function
df = pd.merge(df, df4, on = "roll_no")
print("The resultant DataFrame:")
print(df)

方法2:append()関数を使用する

Python では、2つ以上の pandas DataFrame を結合するために、水平軸または垂直軸のどちらかに沿って追加する append() 関数も使用されます。

ここでは、pandasのDataFrameにappend()`関数を実装してみます。

# Create a new DataFrame-5
df5 = pd.DataFrame({"branch": ['ECE', 'ECE', 'CSE', 'EE', 'ICE', 'ME', 'TT', 'CHE'],
                    "year": [3, 3, 2, 1, 1, 4, 2, 3]})
print("This is DataFrame-5:")
print(df5)
 
# Combine this newly created DataFrame-3
# to the existing DataFrame along horizontal axis
# using join() function
df = df.join(df5)
print("The resultant DataFrame:")
print(df)

結果は以下の通りです。

Dataframe Creation

方法3: merge()関数の使用

Pythonでは、pandasモジュールはデータベーススタイルのjoinを使用してDataframeをマージして結合する merge() 関数を提供しています。

デフォルトでは、pandasのDataframeをマージするために “inner join “オペレーションを使用します。

これはカラム名やインデックスに依存してDataFrameを結合するために使用できますが、渡されたカラム名やインデックスレベルは両方のDataFrameに存在する必要があります。

ここでは、pandasのDataFrameに merge() 関数を実装するためのPythonのコードを説明します。

Dataframe Concatenate

結果は以下の通りです。

Dataframe Append

方法4: join() 関数を使用する

Python では、pandas モジュールは join() 関数を提供しており、2つ以上の pandas DataFrame を指定したカラムまたはインデックスレベルで結合することで効率的に結合することができます

デフォルトでは、インデックスレベルでpandas Dataframeオブジェクトを結合します。

それでは、pandas DataFrame に join() 関数を実装するための Python コードを見てみましょう。

Dataframe Merge

結果は以下の通りです。

Dataframe Join

まとめ

この記事では、以下のことを学びました。

  • PythonのDataFrameオブジェクトとは?
  • pandas DataFrame を組み合わせることの重要性
  • pandas DataFrame を結合するための様々なメソッド
タイトルとURLをコピーしました