Método de Ranking de DataFrame en Pandas

Beginner

Introducción

En este laboratorio, aprenderás cómo utilizar el método DataFrame.rank() en Pandas para asignar rankings a los datos en un DataFrame. El método rank() proporciona un ranking numérico del 1 al n a lo largo del eje especificado, que puede ser el eje del índice o el eje de las columnas. Esto te permite determinar el ranking de los valores en un DataFrame basado en una columna en particular.

Consejos para la MV

Después de que la máquina virtual (MV) haya terminado de iniciarse, haz clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

A veces, es posible que debas esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si encuentras problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona comentarios después de la sesión y resolveremos rápidamente el problema para ti.

Crear un DataFrame y Rankear una Columna

Primero, creemos un DataFrame y usemos el método rank() para asignar rankings a una de las columnas del DataFrame. En este ejemplo, rankearemos la columna 'Profit' en orden ascendente.

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

Rankear una columna en orden descendente

A continuación, modifiquemos el ejemplo del Paso 1 estableciendo el parámetro ascending en False. Esto rankeará la columna en orden descendente.

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

Rankear una columna con diferentes métodos

Si el DataFrame contiene valores duplicados, puedes utilizar diferentes métodos para rankear la columna.

  • El método 'average' asigna el ranking promedio a los valores duplicados.
  • El método 'min' asigna el ranking más bajo a los valores duplicados.
  • El método 'max' asigna el ranking más alto a los valores duplicados.
  • El método 'first' asigna el ranking en el orden en que aparecen en el DataFrame.
  • El método 'dense' es similar a 'min', pero el ranking siempre aumenta en 1 entre grupos.
## 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

Rankear una columna con valores nulos

Si el DataFrame contiene valores nulos (NaN), puedes utilizar el parámetro na_option para especificar cómo se deben rankear los valores nulos.

  • Si na_option se establece en 'keep', los valores nulos se les asignarán rankings NaN.
  • Si na_option se establece en 'top', los valores nulos se les asignará el ranking más bajo.
  • Si na_option se establece en 'bottom' y ascending=True, los valores nulos se les asignará el ranking más alto.
## 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

Resumen

En este laboratorio, aprendiste cómo utilizar el método DataFrame.rank() en Pandas para asignar rankings a los datos en un DataFrame. Puedes especificar diferentes parámetros, como el eje (axis), método, solo numéricos (numeric_only), opción para valores nulos (na_option), orden ascendente (ascending) y porcentaje (pct), para personalizar el proceso de ranking. El método rank() es útil para identificar la posición de los valores dentro de una columna y ordenar datos basados en los rankings.