Pandas の DataFrame 順位付けメソッド

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Pandas の DataFrame.rank() メソッドを使用して、DataFrame 内のデータに順位を割り当てる方法を学びます。rank() メソッドは、指定された軸(インデックス軸または列軸)に沿って 1 から n までの数値順位を提供します。これにより、特定の列に基づいて DataFrame 内の値の順位を決定することができます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして Notebook タブに切り替え、Jupyter Notebook を開いて練習を行ってください。

時には、Jupyter Notebook の読み込みが完了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby に質問してください。セッション終了後にフィードバックを提供していただければ、迅速に問題を解決します。

DataFrame を作成して列に順位を付ける

まず、DataFrame を作成し、rank() メソッドを使用して DataFrame 内の列の 1 つに順位を割り当てましょう。この例では、'Profit' 列を昇順で順位付けします。

## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'Product_Id': [1001, 1002, 1003, 1004],
    'Product_Name': ['Coffee powder', 'Black pepper', 'rosemary', 'Cardamom'],
    'customer_Name': ['Navya', 'Vindya', 'pooja', 'Sinchana'],
    'ordered_Date': ['16-3-2021', '17-3-2021', '18-3-2021', '18-3-2021'],
    'ship_Date': ['18-3-2021', '19-3-2021', '20-3-2021', '20-3-2021'],
    'Profit': [750, 652.14, 753.8, 900.12]
})

## Use the rank() method to assign ranks to the 'Profit' column
df['ranked_profit'] = df['Profit'].rank()

## Display the DataFrame
df

列を降順で順位付けする

次に、Step 1 の例を修正して、ascending パラメータを False に設定しましょう。これにより、列が降順で順位付けされます。

## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'Product_Id': [1001, 1002, 1003, 1004],
    'Product_Name': ['Coffee powder', 'Black pepper', 'rosemary', 'Cardamom'],
    'customer_Name': ['Navya', 'Vindya', 'pooja', 'Sinchana'],
    'ordered_Date': ['16-3-2021', '17-3-2021', '18-3-2021', '18-3-2021'],
    'ship_Date': ['18-3-2021', '19-3-2021', '20-3-2021', '20-3-2021'],
    'Profit': [750, 652.14, 753.8, 900.12]
})

## Use the rank() method to assign ranks to the 'Profit' column in descending order
df['ranked_profit'] = df['Profit'].rank(ascending=False)

## Display the DataFrame
df

異なる方法で列を順位付けする

DataFrame に重複した値が含まれている場合、異なる方法を使用して列を順位付けすることができます。

  • 'average' メソッドは、重複した値に平均順位を割り当てます。
  • 'min' メソッドは、重複した値に最も低い順位を割り当てます。
  • 'max' メソッドは、重複した値に最も高い順位を割り当てます。
  • 'first' メソッドは、DataFrame 内に出現する順序で順位を割り当てます。
  • 'dense' メソッドは 'min' に似ていますが、グループ間で順位は常に 1 ずつ増加します。
## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'column_1': [1, 3, 3, 4, 7],
    'column_2': [1, 2, 3, 4, 5]
})

## Use the rank() method with different methods
df['average_rank'] = df['column_1'].rank(method='average')
df['min_rank'] = df['column_1'].rank(method='min')
df['max_rank'] = df['column_1'].rank(method='max')
df['first_rank'] = df['column_1'].rank(method='first')
df['dense_rank'] = df['column_1'].rank(method='dense')

## Display the DataFrame
df

欠損値を含む列を順位付けする

DataFrame に欠損値 (NaN) が含まれている場合、na_option パラメータを使用して、欠損値の順位付け方法を指定することができます。

  • na_option'keep' に設定すると、欠損値には NaN の順位が割り当てられます。
  • na_option'top' に設定すると、欠損値には最も小さい順位が割り当てられます。
  • na_option'bottom' に設定し、ascending=True の場合、欠損値には最も高い順位が割り当てられます。
## Import the pandas library
import pandas as pd
import numpy as np

## Create a DataFrame with null values
df = pd.DataFrame({
    'column_1': [1, 3, np.nan, 4, np.nan],
    'column_2': [1, 2, 3, np.nan, np.nan]
})

## Use the rank() method with different na_option parameters
df['keep_rank_Nan'] = df['column_2'].rank(na_option='keep')
df['Top_rank_Nan'] = df['column_2'].rank(na_option='top')
df['Bottom_rank_Nan'] = df['column_1'].rank(na_option='bottom')

## Display the DataFrame
df

まとめ

この実験では、Pandas の DataFrame.rank() メソッドを使用して DataFrame 内のデータに順位を割り当てる方法を学びました。軸 (axis)、方法 (method)、数値のみ (numeric_only)、欠損値のオプション (na_option)、昇順 (ascending)、パーセント (pct) などのさまざまなパラメータを指定して、順位付けのプロセスをカスタマイズすることができます。rank() メソッドは、列内の値の位置を特定し、順位に基づいてデータを並べ替えるのに役立ちます。