Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python・PandasでDataFrameの行にランキングを付ける方法【rank()関数の使い方】

データ分析では、データフレームの各行にランキング(順位)を付けて新しい列として追加したい場面がよくあります。順位列があれば、データの並べ替えや特定の要素の順位確認が簡単に行えます。例えば、ゲームのプレイ時間をもとに各タイトルをランク付けするケースを見てみましょう。

サンプルのデータフレーム

#NamePlay Time (in hours)Rate
0Call Of Duty45Better than Average
1Total Overdose46Good
2GTA352Best
3Bully22Average

出力イメージ(ranking列を追加)

#NamePlay Time (in hours)RateRanking
0Call Of Duty45Better than Average3.0
1Total Overdose46Good2.0
2GTA352Best1.0
3Bully22Average4.0

上記の出力を見ると、順位が「3.0」のように整数ではなく小数点付きの数値になっていることに気づくでしょう。これは、同じ値を持つ要素が複数存在する場合、それらの間で順位が分割されるためです。同順位の要素には、平均化された実数の順位が割り当てられます。

rank()関数で順位を割り当てる方法

データフレームの要素に順位を割り当てるには、pandasライブラリの組み込み関数であるrank()を使用します。順位の基準となる列を指定して呼び出すと、各行の順位が格納された新しい列(Series)が返されます。

コード例

import pandas as pd

games = {'Name': ['Call Of Duty', 'Total Overdose', 'GTA 3', 'Bully'],
         'Play Time(in hours)': ['45', '46', '52', '22'],
         'Rate': ['Better than Average', 'Good', 'Best', 'Average']}

df = pd.DataFrame(games)
df['ranking'] = df['Play Time(in hours)'].rank(ascending=0)

print(df)

出力結果

            Name Play Time(in hours)                 Rate  ranking
0    Call Of Duty                  45  Better than Average      3.0
1  Total Overdose                  46                 Good      2.0
2           GTA 3                  52                 Best      1.0
3           Bully                  22              Average      4.0

コードの解説

このコードでは、pandasライブラリの組み込み関数を使って、データフレーム内の各要素の順位を計算しています。ここでは「プレイ時間(時間)」列を基準にして要素をランク付けしています。

まず「ranking」という名前の新しい列を作成し、その中でrank()関数を呼び出します。引数には順位を付けたい列名(この場合はプレイ時間の列)を渡します。なお、ascending=0(False)を指定しているため、値が大きいほど上位(1位)になります。最後にprint()でデータフレーム全体を出力しています。

覚えておくと便利な主なパラメータ

  • ascending:True(昇順・デフォルト)またはFalse(降順)。Falseにすると最大値が1位になります。
  • method:同順位があった場合の処理方法。「average」(デフォルト)、「min」、「max」、「first」、「dense」から選択できます。
  • na_option:欠損値(NaN)の扱い。「keep」(そのままNaNのまま)、「top」、「bottom」から選択できます。

まとめ

この記事では、pandasライブラリの組み込み関数rank()を使って、データフレームの行にランキングを付け、結果を出力する方法を解説しました。DataFrameへの順位付けは非常にシンプルな操作ですが、ascendingやmethodなどのパラメータを正しく理解しておくと、より柔軟に対応できます。ぜひ実際のデータ分析でも活用してみてください。

  1. Python Pandas入門 – データフレームから条件に合う行のサブセットを抽出する方法

    Pandasのデータフレームから行のサブセット(一部の行)を取得するには、条件式を使ってデータを絞り込みます。この手法は「ブールインデックス参照」と呼ばれ、データ分析で最もよく使われる操作のひとつです。 使用するCSVファイル ここでは、Microsoft Excelで開いた次のようなCSVファイル(SalesData.csv)を例にします。車種名(Car)、登録価格(Reg_Price)、販売台数(Units)の3つの列を持つデータです。 CSVファイルをデータフレームとして読み込む まず、read_csv()メソッドを使って、CSVファイルのデータをPandasのデータフレームに読み込み

  2. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存