【第10回】【初心者向け】Pandasでsort_indexとsort_valuesを使った並び替え方法を丁寧に解説

今回は、Pythonのデータ分析ライブラリ「Pandas」で、データフレームの並び替え(sort)方法について解説します。

1. サンプルデータの作成

import pandas as pd

df = pd.DataFrame({
    "名前": ["太郎", "花子", "次郎", "美香", "健一", "恵子", "翔", "茜", "隆", "葵"],
    "年齢": [23, 29, 35, 42, 18, 33, 27, 24, 31, 30],
    "職業": ["エンジニア", "デザイナー", "教師", "医師", "学生", "看護師", "プログラマー", "販売員", "弁護士", "研究者"],
    "年収(円)": [4500000, 5500000, 4900000, 7300000, 0, 4000000, 6000000, 3200000, 8000000, 5800000],
    "居住地": ["東京", "大阪", "名古屋", "札幌", "福岡", "東京", "神戸", "仙台", "横浜", "千葉"],
    "勤続年数": [2, 4, 10, 15, 1, 5, 3, 1, 12, 8]
})

df

出力結果:

インデックス 名前 年齢 職業 年収(円) 居住地 勤続年数
0 太郎 23 エンジニア 4500000 東京 2
1 花子 29 デザイナー 5500000 大阪 4
2 次郎 35 教師 4900000 名古屋 10
3 美香 42 医師 7300000 札幌 15
4 健一 18 学生 0 福岡 1
5 恵子 33 看護師 4000000 東京 5
6 27 プログラマー 6000000 神戸 3
7 24 販売員 3200000 仙台 1
8 31 弁護士 8000000 横浜 12
9 30 研究者 5800000 千葉 8

2. インデックス順に並び替え(sort_index)

# インデックスを昇順にソート
df.sort_index()

※この場合、もともと昇順なので結果は変わりません。

インデックスを降順にする

# インデックスを降順にソート
df.sort_index(ascending=False)

出力結果:

インデックス 名前 年齢 職業 年収(円) 居住地 勤続年数
9 30 研究者 5800000 千葉 8
8 31 弁護士 8000000 横浜 12
7 24 販売員 3200000 仙台 1
6 27 プログラマー 6000000 神戸 3
5 恵子 33 看護師 4000000 東京 5
4 健一 18 学生 0 福岡 1
3 美香 42 医師 7300000 札幌 15
2 次郎 35 教師 4900000 名古屋 10
1 花子 29 デザイナー 5500000 大阪 4
0 太郎 23 エンジニア 4500000 東京 2

3. 値で並び替え(sort_values)

# "居住地"を降順に並び替え
df.sort_values(by='居住地', ascending=False)

出力結果:

インデックス 名前 年齢 職業 年収(円) 居住地 勤続年数
3 美香 42 医師 7300000 札幌 15
2 次郎 35 教師 4900000 名古屋 10
5 恵子 33 看護師 4000000 東京 5
8 31 弁護士 8000000 横浜 12
9 30 研究者 5800000 千葉 8
1 花子 29 デザイナー 5500000 大阪 4
6 27 プログラマー 6000000 神戸 3
7 24 販売員 3200000 仙台 1
0 太郎 23 エンジニア 4500000 東京 2
4 健一 18 学生 0 福岡 1

筆者の体験談:sortでハマった失敗と改善策

初めてsort_valuesを使ったとき、私は次のように複数列を並び替えようとして、うまく動作しないことがありました。

# 誤り:列名を文字列で1つだけ渡していたつもりが意図が伝わっていなかった
# 想定では名前で昇順・年収で降順にしたかった

# 正しくはリストと辞書で複数指定する必要があった
# 改善後:
df.sort_values(by=['名前', '年収(円)'], ascending=[True, False])

また、sort_index()sort_values()を混同して、思ったように値のソートができず、「あれ?インデックスが変わらない?」と混乱した経験もあります。

改善策: 並び替えたい「対象」がインデックスか列かを明確に区別するようにしました。
「index → sort_index」「値 → sort_values」とメモしてIDEの横に貼ったのが意外と効果的でした。

ソートは簡単なようで、細かい指定方法の違いで戸惑うこともあります。小さな違和感を大切にして調べる習慣が大切です。

▶️ sort_indexやsort_valuesの公式ドキュメントも参考にしてください:
pandas DataFrame sort_index Documentation

pandas DataFrame sort_values Documentation

まとめ

  • sort_index():インデックス順に並び替える
  • sort_values(by='列名'):指定した列の値で並び替える
  • 昇順(ascending=True)、降順(ascending=False)を切り替えられる

次回予告

次回は、データフレームを結合(concat)について、わかりやすく解説していきます!

▲ ページトップへ戻る

コメント

タイトルとURLをコピーしました