PythonのPandasのsortメソッドについて

Python,イメージ

AI実装検定のご案内

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メソッドについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次