PR

Python初心者向け:Pandasのconcat関数を使った簡単なデータフレームの結合方法

python
記事内に広告が含まれています。

はじめに

PandasはPythonのデータ分析ライブラリであり、初心者にも扱いやすいツールです。エクセルの様なデータフレームという表形式のデータを操作するためにPython初心者やプログラミングに慣れていなくても、馴染みのある形式なので安心してください。この記事では、Pandasのconcat()関数を使って、データフレームの縦結合(行の追加)と横結合(列の追加)の方法について解説します。具体的な手順とコード例を交えて、初心者でも理解しやすく説明しますので、最後まで読み進めてくださいね。

データフレームの縦結合

データフレームの縦結合は、複数のデータフレームを縦方向に連結する方法です。Pandasのconcat()関数を使うことで簡単に行えます。以下に、具体的な手順を説明します。

pandasのインポートとデータフレーム作成

まず、Pythonでデータフレームを扱うために、Pandasライブラリをインポートします。

import pandas as pd

次に、結合したいデータフレームを作成します。今回は前置きとして、Pandasでの DataFrame作成を理解しているという前提で進めます。では例として、df1df2という2つのデータフレームを考えます。

df1 = pd.DataFrame({'A': [1, 2, 3],
                    'B': ['a', 'b', 'c']})

df2 = pd.DataFrame({'A': [4, 5, 6],
                    'B': ['d', 'e', 'f']})

df1は、

	A	B
0	1	a
1	2	b
2	3	c

df2は、

	A	B
0	4	d
1	5	e
2	6	f

という2つのデータフレームが完成です。

データフレームの縦結合

concat()関数を使用して、データフレームを縦に結合します。この時、引数にaxis=0を指定することで、縦結合が行われます。また、縦結合の場合はインデックスを振り直す必要があるので、引数として、ignore_index=Trueを追加します。

df_combined = pd.concat([df1, df2], axis=0, ignore_index=True)

結合が正しく行われたかを確認するために、結果のデータフレームを出力してみましょう。

print(df_combined)
        A	B
0	1	a
1	2	b
2	3	c
3	4	d
4	5	e
5	6	f

無事に縦に結合し、インデックスも振り直されていますね。

もし、ignore_index=Trueを使わないと、

    A  B
0  1  a
1  2  b
2  3  c
0  4  d
1  5  e
2  6  f

という風に、左端のインデックスが結合される前のまま(上の例では、0,1,2,0,1,2)となってしまいます。

縦結合:医学的な事例

医学的な事例として、患者の臨床データを複数のデータフレームに分割して管理しているケース等が考えられますね。例えば、各データフレームは患者ごとに異なる日にちの体温データがあるとします。

df1 = pd.DataFrame({'PatientID': [103, 329, 56],
                    'Date': ['2022-01-01', '2022-01-03', '2022-01-05'],
                    'Temperature': [36.5, 37.2, 36.9]})

df2 = pd.DataFrame({'PatientID': [413, 29, 311],
                    'Date': ['2022-01-02', '2022-01-04', '2022-01-06'],
                    'Temperature': [36.8, 37.1, 37.4]})

これらのデータフレームを縦に結合することで、全体のデータを一つのデータフレームにまとめることができます。

patient_data = pd.concat([df1, df2], axis=0, ignore_index=True)
print(patient_data)
   PatientID        Date  Temperature
0        103  2022-01-01         36.5
1        329  2022-01-03         37.2
2          56  2022-01-05         36.9
3        413  2022-01-02         36.8
4          29  2022-01-04         37.1
5        311  2022-01-06         37.4

縦結合の結果、各患者の「患者ID、日付、体温」のデータが統合され、一つのデータフレームにまとめられましたね。

データフレームの横結合

データフレームの横結合は、複数のデータフレームを横方向に連結する方法です。concat()関数のaxisパラメータを活用します。以下に、具体的な手順を説明します。

データフレームの横結合

concat()関数を使用して、データフレームを横に結合します。この時、引数にaxix=1を追加すれば横に結合されます。

今度は横結合ですので、サンプルデータフレームは以下の様になります。

df1 = pd.DataFrame({'A': [1, 2, 3],
                    'B': ['a', 'b', 'c']})

df2 = pd.DataFrame({'C': [4, 5, 6],
                    'D': ['d', 'e', 'f']})
df_combined = pd.concat([df1, df2], axis=1)

結合が正しく行われたかを確認するために、結果のデータフレームを出力してみましょう。

print(df_combined)
   A  B  C  D
0  1  a  4  d
1  2  b  5  e
2  3  c  6  f

2つのデータフレームが横に結合されていますね。

横結合:医学的な事例

医学的な事例として、患者の臨床データと病歴データを別々のデータフレームで管理しているケースを考えましょう。臨床データには体温や血圧などの情報があり、病歴データには過去の診断や治療情報が含まれています。

例えば、以下のような臨床データ(df1)と病歴データ(df2)があるとします。

df1 = pd.DataFrame({'PatientID': [1, 2, 3],
                    'Temperature': [36.5, 37.2, 36.9]})

df2 = pd.DataFrame({'Diagnosis': ['Hypertension', 'Diabetes', 'Asthma']})

これらのデータフレームを横に結合することで、患者ごとの臨床データと病歴データを統合することができます。

patient_combined = pd.concat([df1, df2], axis=1)
print(patient_combined)
   PatientID  Temperature     Diagnosis
0          1         36.5  Hypertension
1          2         37.2      Diabetes
2          3         36.9        Asthma

上の例では、患者ごとに異なる情報を持つ複数のデータフレームを横結合することで、総合的な情報を取得できます。サンプルデータでも臨床データと病歴データが結合され、一つのデータフレームにまとめられて情報が理解しやすい形になっていますね。

まとめ

Pandasのconcat()関数を使って、データフレームの縦結合と横結合の方法を学びました。これらの操作を通じて、異なるデータソースからの情報を組み合わせることができます。PythonのPandasを使えば、データフレームの操作を効率的かつ簡単に行えます。是非、これらの知識を活用してデータ分析のスキルを向上させてください。

コメント