Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dferença entre um drop_duplicates() e value_counts()

Qual seria a diferença entre um drop_duplicates() e value_counts() ? Usei a função values_counts() para trazer os dados duplicados em um DataFrame de determinada coluna mas achei que seria a mesma coisa com o drop_duplicates(). Conseguem me explicar a diferença? Obrigado

1 resposta
solução!

Boas Vitor! Tudo bem? Espero que sim!

Muito bacana sua dúvida. Vou explicar de forma teórica e depois dar um exemplo na prática. Vamos lá?


A função value_counts() do pandas do pandas é valiosíssima nas análises de dados, o que ela faz é verificar a contagem de dados iguais em um dataframe ou em uma coluna, e retorna uma Series com esse resultado.

A função drop_duplicates(), por outro lado, percorre o DataFrame retirando todos os registros que são são iguais. E retorna um DataFrame.

Agora vamos às diferenças na prática:

  • a value_counts() é usada quando o interesse é na quantidade de valores repetidos, enquanto a drop_duplicates() é usada quando se quer limpar um DataFrame de registros duplicados;
  • Como dito anteriormente, a value_counts() retorna uma Series, enquanto a drop_duplicates() retorna um DataFrame, ou uma Series, a depender de cada caso.

Normalmente, só usamos a drop_duplicates() quando precisamos retirar registros duplicados, enquanto a value_counts() tem diversas outras aplicações.


Agora vamos ver algumas delas: Pode-se usar a value_counts() por exemplo, para contar em um DataFrame quantas pessoas pertencem ao sexo masculino e quantas pertencem ao sexo feminino. Vamos ao código.

Considerando o DataFrame:

 df = pd.DataFrame([[21,'F', 50, 1.57],[22,'F',58, 1.70], [22,'F',58, 1.70]], index=range(0,3), columns=['Idade', 'Sexo', 'Peso', 'Altura'])

Que visualmente é:

        Idade    Sexo    Peso    Altura
    0    21       F       50      1.57
    1    22       F       58      1.70
    2    22       F       58      1.70

Temos 3 pessoas do sexo feminino, sendo que os registros 1 e 2 estão duplicados.

Se usarmos a função value_counts() para entender quantas pessoas são do sexo feminino, vamos ter um resultado considerando as duplicações:

df.Sexo.value_counts()

que retorna:

F 3

Enquanto se usarmos a função drop_duplicates(), ela considerará todos os registros iguais como duplicatas:

df.Sexo.drop_duplicates()

que retorna:

0 F

No caso de usar as funções em todo o DataFrame, a value_counts() vai retornar a as linhas únicas e a frequência com que aparecem no DataFrame:

df.value_counts()

retorna:

Idade  Sexo  Peso  Altura   #frequencia
22     F     58    1.70          2
21     F     50    1.57          1

Enquanto usar a drop_duplicates(): vai gerar um novo DataFrame, sem as linhas que são duplicadas:

df.drop_duplicates()

que retorna:

    Idade    Sexo    Peso    Altura
0    21        F      50      1.57
1    22        F      58      1.70

Espero ter ajudado! Bons estudos!