Méthode de classement (rank) des DataFrame Pandas

Beginner

Introduction

Dans ce laboratoire, vous apprendrez à utiliser la méthode DataFrame.rank() de Pandas pour attribuer des rangs aux données d'un DataFrame. La méthode rank() attribue un rang numérique de 1 à n le long de l'axe spécifié, qui peut être l'axe des index ou l'axe des colonnes. Cela vous permet de déterminer le classement des valeurs dans un DataFrame en fonction d'une colonne particulière.

Conseils pour la machine virtuelle (VM)

Une fois que la machine virtuelle a démarré, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook et accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes que Jupyter Notebook termine de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes lors de votre apprentissage, n'hésitez pas à demander de l'aide à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Créer un DataFrame et classer une colonne

Tout d'abord, créons un DataFrame et utilisons la méthode rank() pour attribuer des rangs à l'une des colonnes du DataFrame. Dans cet exemple, nous allons classer la colonne 'Profit' par ordre croissant.

## 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

Classer une colonne par ordre décroissant

Ensuite, modifions l'exemple de l'Étape 1 en définissant le paramètre ascending sur False. Cela classera la colonne par ordre décroissant.

## 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

Classer une colonne avec différentes méthodes

Si le DataFrame contient des valeurs dupliquées, vous pouvez utiliser différentes méthodes pour classer la colonne.

  • La méthode 'average' attribue le rang moyen aux valeurs dupliquées.
  • La méthode 'min' attribue le rang le plus bas aux valeurs dupliquées.
  • La méthode 'max' attribue le rang le plus élevé aux valeurs dupliquées.
  • La méthode 'first' attribue le rang dans l'ordre dans lequel les valeurs apparaissent dans le DataFrame.
  • La méthode 'dense' est similaire à 'min', mais le rang augmente toujours de 1 entre les groupes.
## 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

Classer une colonne contenant des valeurs nulles

Si le DataFrame contient des valeurs nulles (NaN), vous pouvez utiliser le paramètre na_option pour spécifier comment les valeurs nulles doivent être classées.

  • Si na_option est défini sur 'keep', les valeurs nulles recevront des rangs NaN.
  • Si na_option est défini sur 'top', les valeurs nulles recevront le rang le plus petit.
  • Si na_option est défini sur 'bottom' et ascending=True, les valeurs nulles recevront le rang le plus élevé.
## 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

Résumé

Dans ce laboratoire, vous avez appris à utiliser la méthode DataFrame.rank() de Pandas pour attribuer des rangs aux données d'un DataFrame. Vous pouvez spécifier différents paramètres, tels que l'axe, la méthode, numeric_only, na_option, ascending et pct, pour personnaliser le processus de classement. La méthode rank() est utile pour identifier la position des valeurs dans une colonne et trier les données en fonction des rangs.