PythonのPandasでデータを大きい順(降順)に並べ替えるには、sort_values() メソッドを使用します。
このメソッドは、Series(1次元)やDataFrame(2次元)に対して使うことができ、柔軟に並べ替えを行うことができます。
以下では、基本的な使い方から、実践的な応用例まで詳しく解説します。
目次
基本:Seriesを降順にソートする
import pandas as pd
# サンプルのSeries
s = pd.Series([30, 10, 50, 20])
# 降順にソート
s_sorted = s.sort_values(ascending=False)
print(s_sorted)
解説
ascending=Falseにすることで 降順 に。- 元のSeries
sは変化しない(非破壊的処理)。変更を反映させたい場合はinplace=Trueを使います。
DataFrameの特定の列を降順にソートする
import pandas as pd
# サンプルのDataFrame
df = pd.DataFrame({
'名前': ['Aさん', 'Bさん', 'Cさん'],
'点数': [88, 92, 75]
})
# 「点数」列で降順にソート
df_sorted = df.sort_values(by='点数', ascending=False)
print(df_sorted)
解説
by='点数':並べ替えの基準となる列名を指定ascending=False:降順にする
複数列で降順ソートする
複数の列を条件にして並べ替えることも可能です。
df = pd.DataFrame({
'名前': ['Aさん', 'Bさん', 'Cさん', 'Dさん'],
'点数': [88, 92, 88, 92],
'年齢': [23, 21, 25, 20]
})
# 「点数」を降順、「年齢」を昇順でソート
df_sorted = df.sort_values(by=['点数', '年齢'], ascending=[False, True])
print(df_sorted)
解説
ascendingにリストを渡すことで、それぞれの列の昇降順を細かく設定できる。
元のDataFrameを直接書き換えたい場合
df.sort_values(by='点数', ascending=False, inplace=True)
inplace=True:ソートを元のdfに直接反映(戻り値はNone)
インデックスで降順にソートしたい場合
列ではなく インデックス(行名) を対象にしたいときは sort_index() を使います。
df = df.sort_index(ascending=False)
ソート後に上位n件を取得(ランキングなど)
# 点数が高い順に上位3件を取得
top3 = df.sort_values(by='点数', ascending=False).head(3)
まとめ
| 目的 | コード例 |
|---|---|
| Seriesを降順に | s.sort_values(ascending=False) |
| DataFrameの列で降順 | df.sort_values(by='列名', ascending=False) |
| 複数列でソート | df.sort_values(by=['列1', '列2'], ascending=[False, True]) |
| 結果を元のdfに反映 | df.sort_values(..., inplace=True) |
| ソート後にインデックスをリセット | df.sort_values(..., ignore_index=True) |
| インデックスで降順に | df.sort_index(ascending=False) |
以上、PythonのPandasのデータを大きい方から降順にする方法についてでした。
最後までお読みいただき、ありがとうございました。
