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