目次
sort_valuesメソッドによるデータ並べ替えの基本
PandasのDataFrameにおいて、特定のカラムの値を基準にデータを並べ替えるには sort_values メソッドを使用します。単一の列だけでなく、複数の列をリスト形式で指定することで、第1優先、第2優先といった詳細なソート条件を設定することが可能です。
サンプルデータの準備
ここでは、社内のプロジェクト管理データを想定したサンプルを作成します。部署名、重要度、および予算額の3つのカラムを持つデータフレームを定義し、これらを組み合わせて並べ替えを行います。
import pandas as pd
# プロジェクトデータの定義
# 部署名(Dept)、優先度(Priority)、予算(Budget)
project_data = {
"Dept": ["Sales", "Tech", "Sales", "HR", "Tech", "HR"],
"Priority": [2, 5, 2, 1, 4, 1],
"Budget": [500000, 1200000, 750000, 300000, 950000, 280000]
}
df = pd.DataFrame(project_data)
print("--- ソート前のデータ ---")
print(df)
複数列を指定した複雑なソート
sort_values メソッドの引数 by にカラム名のリストを渡すことで、複数のキーに基づいたソートが実行されます。また、引数 ascending に真偽値(True/False)のリストを渡すことにより、列ごとに昇順・降順を個別に制御できます。
実装コード
以下のコードでは、部署名(Dept)を昇順に並べ、同じ部署内では優先度(Priority)と予算(Budget)を降順に並べ替えます。
# 複数列を基準にソートを実行
# Dept: 昇順(True), Priority: 降順(False), Budget: 降順(False)
df_sorted = df.sort_values(
by=["Dept", "Priority", "Budget"],
ascending=[True, False, False]
)
print("\n--- ソート後のデータ ---")
print(df_sorted)
実行結果
上記のコードを実行すると、指定した優先順位に従って行が並べ替えられます。
--- ソート前のデータ ---
Dept Priority Budget
0 Sales 2 500000
1 Tech 5 1200000
2 Sales 2 750000
3 HR 1 300000
4 Tech 4 950000
5 HR 1 280000
--- ソート後のデータ ---
Dept Priority Budget
3 HR 1 300000
5 HR 1 280000
0 Sales 2 750000
2 Sales 2 500000
1 Tech 5 1200000
4 Tech 4 950000
パラメータの解説
- by: ソートの基準となるカラム名を、優先順位の高い順にリストで指定します。
- ascending:
byで指定した各カラムに対応するソート順をリストで指定します。Trueは昇順(小さい順)、Falseは降順(大きい順)を意味します。
この手法を用いることで、カテゴリごとのランキング表示や、特定条件下での最大値・最小値の抽出が容易に行えるようになります。
