Soluci贸n

Pandas

Vista general

En este problema, tenemos un DataFrame llamado customers que contiene detalles como customer_id, name, e email. El objetivo es eliminar las filas duplicadas en base a la columna email y solo conservar la primera ocurrencia de cualquier email duplicado.

Conceptos clave:

  1. DataFrame: una estructura en forma de tabla 2D, similar a una hoja de c谩lculo o una tabla SQL. Cada fila representa un registro individual y cada columna un atributo diferente. Es mutable en tama帽o y est谩 dise帽ado para manejar una mezcla de diferentes tipos de datos.

  2. Funci贸n drop_duplicates: es un m茅todo de las instancias de un DataFrame. Su prop贸sito es eliminar filas duplicadas, y permite especificar un criterio para identificar filas duplicadas.

Argumentos de la funci贸n drop_duplicates:

  • subset: Indica el nombre de la columna o secuencia de columnas se deben considerar para identificar filas duplicadas. Si no se especifica, se asume que todas las columnas deben ser tomadas en cuenta.

  • keep: Este argumento determina cual fila duplicada debe conservarse.

    • 'first': (default) Elimina los duplicados, excepto la primera ocurrencia.
    • 'last': Elimina los duplicados, excepto la 煤ltima ocurrencia.
    • False: Elimina todas las filas duplicadas.
  • inplace: Con el valor True, los cambios se realizan directamente en el objeto sin crear un nuevo objeto. Si es False (default), un nuevo objeto sin las filas duplicadas ser谩 retornado.

Intuici贸n

Veamos el paso a paso de la soluci贸n:

  1. Importar pandas:
import pandas as pd

Esta l铆nea importa la libreria pandas y le asigna un alias llamado pd. pandas es una libreria, escrita en Python, de c贸digo abierto para an谩lisis y manipulaci贸n de datos, se caracteriza por ser r谩pida, poderosa, flexible y f谩cil de utilizar.

  1. Definir la funci贸n:
def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:

Esta l铆nea define auna nueva funci贸n llamada dropDuplicateEmails, la cual toma un DataFrame customers como argumento y retorna otro DataFrame.

  1. Eliminar filas duplicadas en base a la columna email:
customers.drop_duplicates(subset='email',
                          keep='first',
                          inplace=True)

Esta l铆nea utiliza el m茅todo drop_duplicates del DataFrame customers.

  • subset='email': esto indica que las filas duplicadas son aquellas que comparten el mismo email.
  • keep='first': esto indica que solo queremos conservar la primera ocurrencia de cualquier email duplicado.
  • inplace=True: esto significa que los cambios se realizar谩n directamente en el DataFrame (customers) sin retornar un nuevo DataFrame.
  1. Regresar el DataFrame modificado:
return customers

Finalmente, regresamos el DataFrame modificado sin las finas duplicadas.

Usar la soluci贸n

Al usar la funci贸n proporcionada, podemos limpiar la informaci贸n en nuestro DataFrame customers y asegurarnos que los email son 煤nicos, ayudando a mantener la integridad de los datos. Si dos clientes tienen la misma direcci贸n de correo electr贸nico, solo la primera occurrencia ser谩 retenida en el DataFrame final.

Visualizaci贸n de la funci贸n dropDuplicateEmails

Alt text

Cuando se pasa este DataFrame a la funci贸n:

customer_id name email
1 Ella emily@example.com
2 David michael@example.com
3 Zachary sarah@example.com
4 Alice john@example.com
5 Finn john@example.com
6 Violet alice@example.com

Retornar谩:

customer_id name email
1 Ella emily@example.com
2 David michael@example.com
3 Zachary sarah@example.com
4 Alice john@example.com
6 Violet alice@example.com

Implementaci贸n

import pandas as pd


def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:
    customers.drop_duplicates(subset='email',
                              keep='first',
                              inplace=True)
    return customers

Nota: al usar inplace=True se modifica el DataFrame original. En caso de que se requiera conservar el DataFrame sin cambios y obtener uno nuevo sin las filas duplicadas, debemos usar inplace=False y asignar el resultado a una nueva variable.

slackmart blog 漏 2024