データ分析に役立つ「Pandas」というライブラリがあります。
これまでにも概要をまとめた記事(リンク)がありますが、「データフレーム」という形で「データ」を扱えるのが特徴です。
今回は「Pandas」の中でも、データフレームの「マージ」「結合」、データのソートを行うメソッドについて、まとめようと思います。
データフレームのマージ(特定の列の値を基準)
以下のメソッドで、2つのデータフレームを指定した列をキーとして結合します。
また、「on=」で結合キーを指定し、「how=」で結合方法(内部結合、外部結合など)を指定できます。
コードサンプル:
import pandas as pd
# サンプルデータ
data1 = {
‘ID’: [1, 2, 3],
‘名前’: [‘田中’, ‘鈴木’, ‘佐藤’] }
data2 = {
‘ID’: [1, 2, 4],
‘年齢’: [25, 30, 22] }
data3 = {
‘ID’: [1, 3, 5],
‘出身’: [‘東京’, ‘埼玉’, ‘千葉’] }
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)# ‘ID’列を基準に内部結合
merged_df1 = pd.merge(df1, df2, on=’ID’, how=’inner’)
# ‘ID’列を基準に外部結合
merged_df2 = pd.merge(merged_df1, df3, on=’ID’, how=’outer’)
print(‘内部結合の結果’)
print(merged_df1)
print(‘\n外部結合の結果’)
print(merged_df2)
実行結果:
内部結合の結果
ID 名前 年齢
0 1 田中 25
1 2 鈴木 30外部結合の結果
ID 名前 年齢 出身
0 1 田中 25.0 東京
1 2 鈴木 30.0 NaN
2 3 NaN NaN 埼玉
3 5 NaN NaN 千葉
データフレームの結合
以下のメソッドで、複数のデータフレームを結合します。
ただし、結合対象のデータフレームに存在する列に過不足があった場合はエラーになります。
また、「axis=」で行方向(0を指定)に結合するか、列方向(1を指定)に結合するかを指定できます。
コードサンプル:
import pandas as pd
# サンプルデータ
data1 = {
‘ID’: [1, 2],
‘名前’: [‘田中’, ‘鈴木’] }
data2 = {
‘ID’: [2, 3],
‘年齢’: [25, 30] }
data3 = {
‘ID’: [3, 4],
‘名前’: [‘佐藤’, ‘山田’] }
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)# 行方向に結合
concat_df1 = pd.concat([df1, df2, df3], axis=0)
concat_df2 = pd.concat([df1, df2, df3], axis=1)print(‘行方向に結合’)
print(concat_df1)
print(‘\n縦方向に結合’)
print(concat_df2)
実行結果:
行方向に結合
ID 名前 年齢
0 1 田中 NaN
1 2 鈴木 NaN
0 2 NaN 25.0
1 3 NaN 30.0
0 3 佐藤 NaN
1 4 山田 NaN
縦方向に結合
ID 名前 ID 年齢 ID 名前
0 1 田中 2 25 3 佐藤
1 2 鈴木 3 30 4 山田
データのソート
以下のメソッドで、データフレームのデータをソートします。
ソートする際の「列」および「昇順(小さい順)/降順(大きい順)」は指定することができ、順に「by」「ascending」を使用します。
なお、「ascending」は明示的に指定しなくても実行可能で、その場合は昇順になります。
コードサンプル:
import pandas as pd
# サンプルデータ
data = {
‘名前’: [‘田中’, ‘鈴木’, ‘佐藤’],
‘年齢’: [25, 30, 22] }
df = pd.DataFrame(data)
# ‘名前’列で昇順にソート
sorted_by_name = df.sort_values(by=’名前’, ascending=True)
print(“Sorted by Name (ascending):”)
print(sorted_by_name)# ‘年齢’列で降順にソート
sorted_by_age = df.sort_values(by=’年齢’, ascending=False)
print(“\nSorted by Age (descending):”)
print(sorted_by_age)
実行結果:
Sorted by Name (ascending):
名前 年齢
2 佐藤 22
0 田中 25
1 鈴木 30Sorted by Age (descending):
名前 年齢
1 鈴木 30
0 田中 25
2 佐藤 22
まとめ
今回は、Pythonで扱えるライブラリの「Pandas」のメソッドについてまとめてみました。
他にも多くのメソッドが存在するため、複数の記事に渡って解説しています。
他の記事も、ぜひ参考にしてみて下さい。