Pular para o conteúdo principal

Tutorial: como remover duplicados no pandas

Aprenda a remover duplicados em Python usando pandas.
· 4 min leer

Explore com IA

Remover duplicados é uma habilidade essencial para obter contagens precisas, porque você geralmente não quer contar a mesma coisa várias vezes. Em Python, isso pode ser feito com o módulo pandas, que tem um método chamado drop_duplicates.

Vamos entender como usá-lo com a ajuda de alguns exemplos.

Removendo nomes duplicados

Imagine que você tem um dataframe com visitas ao veterinário e o consultório quer saber quantos cães de cada raça passaram por lá. Porém, existem cães como Max e Stella que foram ao veterinário mais de uma vez no seu conjunto de dados. Por isso, você não pode simplesmente contar o número de cada raça na coluna de raças.

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 resolver isso, você removeria as linhas que contêm um nome de cão já listado anteriormente; em outras palavras, extrairia apenas um cão de cada nome do dataset.

Você faz isso usando o método drop_duplicates. Ele recebe o argumento subset, que é a coluna na qual queremos buscar duplicatas — neste caso, queremos todos os nomes ú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)

Mas e se houver cães com o mesmo nome?

Removendo pares duplicados

Nesse caso, precisamos considerar mais do que apenas o name ao remover duplicados. Como Max e Max são de raças diferentes, podemos remover as linhas com pares de nome e raça que já apareceram antes no 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 basear a remoção de duplicados em várias colunas, podemos passar uma lista de nomes de colunas para o argumento subset — neste caso, name e breed.

Agora os dois Max foram incluídos.

Exemplo interativo

Neste exercício, você vai criar alguns novos DataFrames usando valores únicos de sales. sales está disponível e o pandas foi importado como pd.

Você fará o seguinte:

  • Primeiro, remover as linhas de sales com pares duplicados de store e type, salvar como store_types e imprimir o head.
  • Depois, remover as linhas de sales com pares duplicados de store e department, salvar como store_depts e imprimir o head.
  • Filtrar as linhas que são semanas de feriado e remover datas duplicadas, salvando como holiday_dates.
  • Por fim, selecionar a coluna date de holiday_dates e imprimir o 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"])

Ao executar o código acima, obtemos o seguinte 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]

Experimente você mesmo.

Para saber mais sobre contagem e agregação de dados, confira este vídeo do nosso curso Data Manipulation with pandas.

Este conteúdo foi extraído do curso Data Manipulation with pandas da DataCamp, por Maggie Matsui e Richie Cotton.

Temas

Relacionado

Tutorial

Tutorial de seleção de colunas em Python

data-frames-in-python-banner_cgzjxy.jpeg

Tutorial

Pandas Tutorial: DataFrames em Python