Fala meu amigo, tudo bem com você? Que bom encontrar com você novamente em mais um capitulo dos nossos estudos de Python.
No post de hoje contaremos com a participação especial da dupla dinâmica Python e Pandas e do quarteto fantástico Unique(), Drop_Duplicates(), Sort_Value() e Sorted(). Confesso para você, vai ser muito irado e tenho certeza que você vai gostar!
E pra não perder o costume, no final, deixo os links de referência para a documentação oficial de cada um deles.
Meu objetivo principal, é trazer para você o conhecimento de como podemos obter valores únicos com Pandas utilizando os métodos unique() e drop_duplicates() e como conseguimos ordenar um DataFrame usando os métodos sorted() e sort_values().
Após essa explanação, vamos iniciar pelo método Unique().
Esse método é usando quando pretendemos retornar valores únicos ou distintos para uma coluna de um dataframe, muito parecido com o DISTINCT do Microsoft SQL Server.
Para melhorar a explicação, vamos iniciar pela criação de um dataframe para simular a sua aplicabilidade.
dfCarros=pd.DataFrame([
['Gol','Volksvagen'],
['Golf','Volksvagen'],
['Voyage','Volksvagen'],
['Jetta','Volksvagen'],
['Ford Ka','Ford'],
['Uno Mile','Fiat'],
['Argo','São Paulo'],
['Sandero','Renault'],
['Duster','Renault']
],
columns=['Modelo','Marca'])
Concluída a criação do dataframe dfCarros, ficamos com o seguinte resultado.
Em nosso primeiro exemplo, recebemos uma missão da área de negócio da nossa empresa XPTO. Disponibilizar um relatório que tenha a lista de todas as marcas de carros que da empresa. Acompanhe comigo como seria esse script!
list(dfCarros['Marca'].unique())
Muito simples né! Agora vamos abordar uma outra forma de realizar esse DISTINCT. Nesse momento vamos falar sobre o método Drop_Duplicates().
Esse método é bem parecido com o Unique(), mais vamos com calma pois existem grandes diferenças. Vamos analisá-las juntos!
O método unique() realiza uma apresentação distinta dos valores de uma coluna e não modifica o dataframe já o método drop_duplicates() realizar a mesma operação porém permite que a alteração no dataframe seja persistida.
E por último antes de ir para os códigos, o método drop_duplicate() permite a utilização de 3 tipos de argumentos em conjunto com o método. São eles "False", "first" e "last". Vamos destrincha-los melhor.
Usarei o mesmo dataframe "dfCarros" nesse exemplo. Após a criação, vamos criar um outro dataframe somente com informações de marca.
# Criação DataFrame somente com informações de Marca
dfCarrosMarca = dfCarros['Marca']
Feito isso, vamos aplicar o método e analisar o retorno (informações na imagem a seguir).
dfCarrosMarca.drop_duplicates()
Como resultado, observe que apenas uma linha de cada marca foi retornada.
E conforme citado anteriormente, podemos aplicar o método drop_duplicantes() passando 3 argumentos diferentes.
False - Apaga todos os registros duplicados, ficando no dataframe apenas os registros que não estão duplicados;
first - Retorna apenas um registro para cada valor duplicado, onde esse registro é correspondente a primeira ocorrência do índice;
last - Possui o mesmo comportamento do first, porém ele retorna o último registro correspondente ao índice.
A aplicação do first e do last deverá obedecer a seguinte regra.
dfCarrosMarca.drop_duplicates(keep='first')
dfCarrosMarca.drop_duplicates(keep='last')
Deve ser escrito em minúsculo e estar entre de aspas simples.
O argumento False, não precisa estar entre aspas simples e deve ser escrito com a primeira letra maiúscula.
dfCarrosMarca.drop_duplicates(keep=False)
Os argumentos False, first e last quando combinados com o argumento "inplace=True", significa que a alteração deve ser persistida no dataframe, ou seja, os dados são alterados definitivamente.
dfCarrosMarca.drop_duplicates(keep=False, inplace=True)
dfCarrosMarca.drop_duplicates(keep='last',inplace=True)
dfCarrosMarca.drop_duplicates(keep='first',inplace=True)
Agora por último, vamos falar sobre o método Sort_values(). Esse método serve para realizar a ordenação de uma coluna do dataframe. Observe abaixo.
dfCarros.sort_values(by=['Marca','Modelo'])
Para realizar a ordenação decrescente, basta acrescentar o argumento "ascending=False".
dfCarros.sort_values(by=['Marca','Modelo'],ascending=False)
E quando falamos de ordenação, não podemos deixar de falar do método sort(). Esse método foi descontinuado, sendo substituído pelo método sort_values(). Deixo o link abaixo para alguma consulta.
Concluímos aqui nosso post e acredito que o principal objetivo foi concluído. Apresentamos outras três forma de manipulação de dados, espero que tenham gostado, espero você no próximo!
Link Unique() - https://pandas.pydata.org/docs/reference/api/pandas.unique.html?highlight=unique#pandas.unique
Link Drop_Duplicates() - https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html?highlight=drop_duplicates
Link Sort_Value() - https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html?highlight=sort_value
Link Sorted() - https://pandas.pydata.org/pandas-docs/version/0.19/generated/pandas.DataFrame.sort.html