Saltar al contenido principal

Tutorial de drop duplicates en pandas

Aprende a eliminar duplicados en Python con pandas.
· 4 min leer

Explora con IA

Eliminar duplicados es una habilidad clave para obtener recuentos precisos, porque a menudo no quieres contar lo mismo varias veces. En Python, puedes hacerlo con el módulo pandas, que incluye el método drop_duplicates.

Veamos cómo usarlo con algunos ejemplos.

Eliminar nombres duplicados

Imagina que tienes un dataframe con visitas al veterinario y la clínica quiere saber cuántos perros de cada raza han pasado por allí. Sin embargo, en tu conjunto de datos hay perros como Max y Stella que han ido al veterinario más de una vez. Por tanto, no puedes limitarte a contar las razas en la columna de raza.

print(vet_visits)
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-06-07      Max     Labrador      28.35
2   2018-01-17   Stella    Chihuahua       1.51
3   2019-10-19     Lucy    Chow Chow      24.07
..         ...      ...          ...        ...
71  2018-01-20   Stella    Chihuahua       2.83
72  2019-06-07      Max    Chow Chow      24.01
73  2018-08-20     Lucy    Chow Chow      24.40
74  2019-04-22      Max     Labrador      28.54

Para resolverlo, eliminarías las filas que contienen un nombre de perro ya listado antes; es decir, extraerías una única fila por cada nombre.

Para ello, usarías el método drop_duplicates. Acepta el argumento subset, que indica la columna sobre la que queremos detectar duplicados; en este caso, queremos quedarnos con los nombres únicos.

vet_visits.drop_duplicates(subset="name")
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-06-07      Max    Chow Chow      24.01
2   2019-03-19  Charlie       Poodle      24.95
3   2018-01-17   Stella    Chihuahua       1.51
4   2019-10-19     Lucy    Chow Chow      24.07
7   2019-03-30   Cooper    Schnauzer      16.91
10  2019-01-04   Bernie  St. Bernard      74.98
(6  2019-06-07      Max     Labrador      28.35)

Pero ¿y si hay perros con el mismo nombre?

Eliminar pares duplicados

En ese caso, debemos tener en cuenta algo más que name al eliminar duplicados. Como Max y Max son de razas distintas, podemos eliminar las filas que repitan pares de nombre y raza ya vistos antes en el dataset.

unique_dogs = vet_visits.drop_duplicates(subset=["name", "breed"])
print(unique_dogs)
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-03-13      Max    Chow Chow      24.13
2   2019-03-19  Charlie       Poodle      24.95
3   2018-01-17   Stella    Chihuahua       1.51
4   2019-10-19     Lucy    Chow Chow      24.07
6   2019-06-07      Max     Labrador      28.35
7   2019-03-30   Cooper    Schnauzer      16.91
10  2019-01-04   Bernie  St. Bernard      74.98

Para basar la eliminación de duplicados en varias columnas, podemos pasar una lista de nombres de columna al argumento subset; en este caso, name y breed.

Ahora se han incluido ambos Max.

Ejemplo interactivo

En este ejercicio, crearás nuevos DataFrames con valores únicos de sales. sales está disponible y pandas está importado como pd.

Realizarás estos pasos:

  • Primero, eliminarás de sales las filas con pares duplicados de store y type, guardarás el resultado como store_types y mostrarás el head.
  • Después, eliminarás de sales las filas con pares duplicados de store y department, guardarás el resultado como store_depts y mostrarás el head.
  • Filtra las filas que correspondan a semanas festivas y elimina las date duplicadas, guardándolo como holiday_dates.
  • Por último, selecciona la columna date de holiday_dates y muestra el dataframe holiday_dates.
# Drop duplicate store/type combinations
store_types = sales.drop_duplicates(subset=["store", "type"])
print(store_types.head())

# Drop duplicate store/department combinations
store_depts = sales.drop_duplicates(subset=["store", "department"])
print(store_depts.head())

# Subset the rows that are holiday weeks and drop duplicate dates
holiday_dates = sales[sales["is_holiday"]].drop_duplicates(subset="date")

# Print date col of holiday_dates
print(holiday_dates["date"])

Al ejecutar el código anterior, se obtiene el siguiente resultado:

      store type  department       date  weekly_sales  is_holiday  temperature_c  fuel_price_usd_per_l  unemployment
0         1    A           1 2010-02-05      24924.50       False          5.728                 0.679         8.106
901       2    A           1 2010-02-05      35034.06       False          4.550                 0.679         8.324
1798      4    A           1 2010-02-05      38724.42       False          6.533                 0.686         8.623
2699      6    A           1 2010-02-05      25619.00       False          4.683                 0.679         7.259
3593     10    B           1 2010-02-05      40212.84       False         12.411                 0.782         9.765
    store type  department       date  weekly_sales  is_holiday  temperature_c  fuel_price_usd_per_l  unemployment
0       1    A           1 2010-02-05      24924.50       False          5.728                 0.679         8.106
12      1    A           2 2010-02-05      50605.27       False          5.728                 0.679         8.106
24      1    A           3 2010-02-05      13740.12       False          5.728                 0.679         8.106
36      1    A           4 2010-02-05      39954.04       False          5.728                 0.679         8.106
48      1    A           5 2010-02-05      32229.38       False          5.728                 0.679         8.106
498    2010-09-10
691    2011-11-25
2315   2010-02-12
6735   2012-09-07
6810   2010-12-31
6815   2012-02-10
6820   2011-09-09
Name: date, dtype: datetime64[ns]

Pruébalo tú mismo.

Si quieres aprender más sobre recuentos y agregaciones de datos, echa un vistazo a este vídeo de nuestro curso Data Manipulation with pandas.

Este contenido forma parte del curso Data Manipulation with pandas de DataCamp, creado por Maggie Matsui y Richie Cotton.

Temas

Relacionado

Tutorial

Tutorial de unión de DataFrames en pandas

data-frames-in-python-banner_cgzjxy.jpeg

Tutorial

Tutorial de Pandas: DataFrames en Python