データ分析を進めていくと、「データを並び替えたい!」「順位をつけたい!」という場面に必ず遭遇しますよね。
そんなときに役立つのが、Pandasのsort_valuesとrankメソッドです。これらのメソッドを使えば、データの並び替えやランキングがとっても簡単にできます。
この記事では、この2つのメソッドの使い方を、わかりやすく解説していきます。
データの並び替え:sort_valuesの使い方
データを並び替えることって、よくありますよね。例えば、売上が高い順に商品を並べたいとか、日付順に出来事を並べたいとか。Pandasのsort_valuesメソッドを使えば、これがサクッとできます。
基本的なsort_valuesの使い方
sort_valuesメソッドを使うと、指定した列を基準にデータフレームを並び替えることができます。まずは、基本的な使い方から見ていきましょう。
1 2 3 4 5 6 |
import pandas as pd # サンプルデータの作成 data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Score': [85, 95, 78, 92, 88]} df = pd.DataFrame(data) df |

1 2 3 |
# 'Score'列を基準に昇順で並び替え df_sorted = df.sort_values(by='Score') df_sorted |

このコードでは、Score列を基準に昇順(小さい順)でデータを並び替えています。結果は、最も低いスコアから高いスコアの順に並び替えられますね。
降順での並び替え
「いやいや、高い順に並べたいんだよ!」という場合もありますよね。そのときは、ascending=Falseを指定するだけでOKです。
'Score'列を基準に降順で並び替え
1 2 |
df_sorted_desc = df.sort_values(by='Score', ascending=False) df_sorted_desc |

このコードでは、Score列を基準に降順(大きい順)で並び替えています。これで、最高得点者が一番上に来ましたね!
複数の列での並び替え
時には、複数の列を基準にして並び替えたいこともありますよね。そんなときもsort_valuesが活躍します!
1 2 3 4 5 6 7 8 |
# 'Score'を降順、'Name'を昇順で並び替え data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Score1': [85, 95, 78, 92, 85], 'Score2': [2, 0, 10, 5, 1]} df = pd.DataFrame(data) df_sorted_multi = df.sort_values(by=['Score1', 'Score2'], ascending=[False, True]) df_sorted_multi |

このコードでは、まずScoreを降順で、次にNameを昇順で並び替えています。複数の基準での並び替えもバッチリです!
ランキングの作成:rankの使い方
並び替えた結果を見たら、「これ、順位付けできないかな?」って思いますよね。そんなときに役立つのがrankメソッドです。このメソッドを使うと、データに順位をつけることができます。
基本的なrankの使い方
rankメソッドは、指定した列に対して順位をつけ、その結果を新しい列として追加することができます。
1 2 3 |
# 'Score'列に対して順位をつける df['Rank'] = df['Score1'].rank() df |

このコードでは、Score列の値に基づいて順位が付けられています。デフォルトでは、同じ値があると平均順位がつけられます。
高いスコアが1位になるように、降順でランキングをつけたいこともありますよね。その場合は、ascending=Falseを指定します。
1 2 3 |
# 'Score'列を降順で順位をつける df['Rank_desc'] = df['Score'].rank(ascending=False) df |
これで、最も高いスコアが1位にランクインしました!直感的で使いやすいですね。
同順位の扱い
同じスコアのデータがある場合、rankメソッドではいくつかの方法で同順位を扱うことができます。
• method='average': 同じ値には平均順位をつけます(デフォルト)。
• method='min': 同じ値には最小の順位をつけます。
• method='max': 同じ値には最大の順位をつけます。
1 2 3 4 |
# 'Score'列で同順位がある場合の処理 df['Rank_min'] = df['Score'].rank(method='min') df['Rank_max'] = df['Score'].rank(method='max') df |

これで、同じスコアが出たときの順位付けの違いがわかりますね。どの方法が最適かは、分析の目的に応じて選んでみてください!
まとめ
Pandasのsort_valuesとrankメソッドを使えば、データの並び替えとランキングが簡単にできますね!
sort_valuesで好きな順序にデータを並び替え、rankで順位付けをすることで、よりデータがわかりやすくなりますね。