Obtenha Valores Únicos de Pandas em Coluna e Classifique-os

Manav Narula 30 janeiro 2023
  1. Obter valores únicos na Coluna DataFrame de Pandas com o método unique
  2. Obter valores únicos na coluna DataFrame de Pandas com o método drop_duplicates
  3. Ordenar uma coluna em Pandas DataFrame
Obtenha Valores Únicos de Pandas em Coluna e Classifique-os

Este artigo irá introduzir como obter valores únicos na coluna Pandas DataFrame.

Por exemplo, suponha que temos um DataFrame composto por indivíduos e as suas profissões, e queremos saber o número total de profissões. Nesse caso, não podemos simplesmente utilizar a contagem total de filas para determinar o total de profissões únicas, porque muitas pessoas podem ter o mesmo emprego. Para tais situações, podemos utilizar as funções unique() e drop_duplicates() fornecidas pela biblioteca Pandas.

É também importante saber como ordenar o DataFrame, uma vez que pode ajudar a visualizar e compreender os dados. As funções sorted() e sort_values() podem ajudar a conseguir isto.

Vamos ordenar e remover o DataFrame seguinte neste tutorial.

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})

print(df)

Resultado:

   A  B
0  7  1
1  1  2
2  5  8
3  4  5
4  2  3
5  1  4
6  4  2
7  4  6
8  8  8

Obter valores únicos na Coluna DataFrame de Pandas com o método unique

O método Pandas Series unique() é utilizado quando lidamos com uma única coluna de um DataFrame e devolve todos os elementos únicos de uma coluna. A saída final utilizando a função unique() é um array.

Exemplo:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})

print(df["A"].unique())
print(type(df["A"].unique()))

Resultado:

[7 1 5 4 2 8]
numpy.ndarray

Obter valores únicos na coluna DataFrame de Pandas com o método drop_duplicates

drop_duplicates() pode ser aplicado ao DataFrame ou ao seu subconjunto e preserva o tipo do objecto DataFrame. Também é considerada uma opção mais rápida quando se lida com grandes conjuntos de dados para remover valores duplicados.

Exemplo:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})

print(df.drop_duplicates(subset="A"))
print(type(df.drop_duplicates(subset="A")))

Resultado:

   A  B
0  7  1
1  1  2
2  5  8
3  4  5
4  2  3
8  8  8
pandas.core.frame.DataFrame

Ordenar uma coluna em Pandas DataFrame

Podemos utilizar o método sorted() para ordenar uma coluna, mas ele converte o resultado final para um objecto do tipo lista. Podemos também ordenar os valores da coluna por ordem decrescente, colocando o parâmetro reversed como True.

O exemplo seguinte ordena a coluna em ordem ascendente e remove os valores duplicados:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})

df_new = df.drop_duplicates(subset="A")

print(sorted(df_new["A"]))
print(type(sorted(df_new["A"])))

Resultado:

[1, 2, 4, 5, 7, 8]
list

sort_values() é outra opção flexível para ordenar um DataFrame. Aqui podemos especificar a coluna a ser ordenada utilizando o parâmetro por e se a ordem é ascendente ou descendente utilizando o parâmetro ascending. Preserva o tipo de objecto como Pandas DataFrame.

O exemplo seguinte ordena a coluna em ordem decrescente e remove os valores duplicados:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})

df_new = df.drop_duplicates(subset="A")

print(df_new.sort_values(by="A", ascending=False))
type(df_new.sort_values(by="A"))

Resultado:

   A  B
8  8  8
0  7  1
2  5  8
3  4  5
4  2  3
1  1  2
pandas.core.frame.DataFrame
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Pandas DataFrame