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のデータを大きい方から降順にする方法についてでした。
最後までお読みいただき、ありがとうございました。