はじめに
PandasはPythonのデータ分析ライブラリであり、初心者にも扱いやすいツールです。エクセルの様なデータフレームという表形式のデータを操作するためにPython初心者やプログラミングに慣れていなくても、馴染みのある形式なので安心してください。この記事では、Pandasのconcat()
関数を使って、データフレームの縦結合(行の追加)と横結合(列の追加)の方法について解説します。具体的な手順とコード例を交えて、初心者でも理解しやすく説明しますので、最後まで読み進めてくださいね。
データフレームの縦結合
データフレームの縦結合は、複数のデータフレームを縦方向に連結する方法です。Pandasのconcat()
関数を使うことで簡単に行えます。以下に、具体的な手順を説明します。
pandasのインポートとデータフレーム作成
まず、Pythonでデータフレームを扱うために、Pandasライブラリをインポートします。
import pandas as pd
次に、結合したいデータフレームを作成します。今回は前置きとして、Pandasでの DataFrame作成を理解しているという前提で進めます。では例として、df1
とdf2
という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を使えば、データフレームの操作を効率的かつ簡単に行えます。是非、これらの知識を活用してデータ分析のスキルを向上させてください。
コメント