【毎日Python】Pythonでデータフレームの要素にランク付けする方法|DataFrame.rank

【毎日Python】Pythonでデータフレームの要素にランク付けする方法|DataFrame.rank
import pandas as pd
df = pd.DataFrame({'名前': ['apple', 'banana', 'peach', 'cherry', 'blueberry'], 'A店': [120, 150, 210, 110, 230], 
                   'B店': [220, 210, 180, 170, 260], 'C店':[180, 120, 150, 200, 200]})
df

Pythonでデータフレームやシリーズにランク付けをする方法です。
使用するのは、Pythonのpandasライブラリのrankメソッドです。
このようなデータフレームを用意します。

df.rank()

まず、rankの引数に何も指定せずに実行してみましょう。
列ごとにランク付けをすることができました。
デフォルトでは、数値は昇順、文字列はアルファベット順にランク付けされます。
また、同じ値には、平均順位が表示されます。

df.rank(ascending=False)

降順にする場合には、引数にascendingでFalseを指定します。
実行します。
降順でランク付けすることができました。

df.rank(axis=1)

行ごとにランク付けをする場合には、引数にaxis=1を指定します。
実行します。
行ごとにランク付けをすることができました。
行に関しては、要素に文字列が含まれる場合、文字列の要素は除外されます。

df.rank(numeric_only=True)

ただし、列に関しては、文字列の要素を除外する場合には引数で指定する必要があります。
numeric_onlyにNoneを指定して実行してみましょう。
列ごとに、数値の要素のみランク付けを行うことができました。

ser = pd.Series(['apple', 'banana', 'peach', 'cherry', 'grape'])
ser

なお、このようにシリーズでも同様に実行できます。

関連メソッド

【毎日Python】Pandasのデータフレームをカラムで並び替える方法|sort_values

【毎日Python】 Pythonでインデックス名やカラム名に沿って並び替える方法|sort_index

【毎日Python】Pythonでデータフレームの行列を並び替えや抽出する方法|reindex