Pandasのsort系メソッドは、データ分析や前処理で非常によく使われる基本操作の一つです。
特にDataFrameやSeries
を任意の基準で並べ替えるときに利用します。
代表的なのは以下の2つです。
sort_values()
値に基づいて並べ替えるsort_index()
インデックスに基づいて並べ替える
ここから、それぞれ詳しく解説します。
目次
sort_values()
– 値で並べ替える
データを「ある列(または複数列)の値」を基準に並べ替えるときに使います。
基本構文
DataFrame.sort_values(
by, # 並べ替える対象の列名または列名リスト
axis=0, # 0は行方向(デフォルト)、1は列方向
ascending=True, # 昇順(True) or 降順(False)
inplace=False, # 元のデータを直接変更するか
kind="quicksort", # ソートアルゴリズム("mergesort"なら安定ソート)
na_position="last" # NaNを最後に置く("last")か先頭に置く("first")
)
※このコード単体では、出力はできません。
使用例
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 30, 20, 35],
"score": [88, 92, 95, 70]
})
# 年齢で昇順にソート
print(df.sort_values(by="age"))
# 複数列(score降順 → age昇順)
print(df.sort_values(by=["score", "age"], ascending=[False, True]))
sort_index()
– インデックスで並べ替える
インデックス(行ラベルや列ラベル)に基づいて並べ替えるときに使います。
基本構文
DataFrame.sort_index(
axis=0, # 0は行ラベル、1は列ラベル
ascending=True, # 昇順 or 降順
inplace=False, # 元のデータを変更するか
kind="quicksort", # ソートアルゴリズム
na_position="last" # NaNインデックスの扱い
)
※このコード単体では、出力はできません。
使用例
# 行ラベルで降順
print(df.sort_index(ascending=False))
# 列ラベルを昇順
print(df.sort_index(axis=1))
Series
の場合
Series
にも同様に使えます。
s = pd.Series([7, 1, 4, 3], index=["d", "a", "c", "b"])
# 値でソート
print(s.sort_values())
# インデックスでソート
print(s.sort_index())
ソートアルゴリズム(kind
引数)
"quicksort"
(デフォルト):高速だが安定でない場合あり"mergesort"
:安定ソート(同じ値の順序を保持)"heapsort"
:あまり使われないが選択可能
よくある実用的な使い方
- ランキング上位を取りたいとき
# 上位3件のスコア print(df.sort_values("score", ascending=False).head(3))
- 列ラベルをソートして可読性を上げるとき
print(df.sort_index(axis=1))
- NaNを前に持ってくる
df.sort_values("age", na_position="first")
まとめ
sort_values()
→ 列の値でソートsort_index()
→ インデックスでソートascending
,inplace
,na_position
などのオプションを使い分けると柔軟に並べ替え可能- 複数列を指定すれば「第1キー、第2キー…」でソートできる
以上、PythonのPandasのsortメソッドについてでした。
最後までお読みいただき、ありがとうございました。