Pré-requisito: Python - Pandas Dataframe.sort_values() | Parte 1
Python é uma ótima linguagem para fazer análise de dados, principalmente por causa do fantástico ecossistema de pacotes Python centrados em dados. O Pandas é um desses pacotes e torna a importação e análise de dados muito mais fácil.
A função sort_values()
de pandas classifica um Dataframe em ordem crescente ou decrescente da coluna passada. É diferente da função Python sorted
, pois não pode classificar um Dataframe e uma coluna específica não pode ser selecionada.
Vamos discutir Dataframe.sort_values()
Classificação de vários parâmetros:
Sintaxe:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)
Para obter o link para o arquivo CSV usado no código, clique aqui.
Exemplo #1: Classificação por nome e equipe.
No exemplo a seguir, um Dataframe é feito a partir do arquivo csv e o Dataframe é classificado em ordem crescente da Equipe e em cada Equipe o Nome também é classificado em ordem crescente.
Antes de ordenar
# Importa o pacote pandas import pandas as pd # Cria um dataframe a partir de um arquivo csv data = pd.read_csv("nba.csv") # Ordena o dataframe por time e por nomes data.sort_values( ["Team", "Name"], axis=0, ascending=True, inplace=True ) print(data)
Saída:
Name Team Number Position Age Height Weight College Salary 312 Al Horford Atlanta Hawks 15.0 C 30.0 6-10 245.0 Florida 12000000.0 318 Dennis Schroder Atlanta Hawks 17.0 PG 22.0 6-1 172.0 NaN 1763400.0 323 Jeff Teague Atlanta Hawks 0.0 PG 27.0 6-2 186.0 Wake Forest 8000000.0 309 Kent Bazemore Atlanta Hawks 24.0 SF 26.0 6-5 201.0 Old Dominion 2000000.0 311 Kirk Hinrich Atlanta Hawks 12.0 SG 35.0 6-4 190.0 Kansas 2854940.0 .. ... ... ... ... ... ... ... ... ... 376 Markieff Morris Washington Wizards 5.0 PF 26.0 6-10 245.0 Kansas 8000000.0 375 Nene Hilario Washington Wizards 42.0 C 33.0 6-11 250.0 NaN 13000000.0 378 Otto Porter Jr. Washington Wizards 22.0 SF 23.0 6-8 198.0 Georgetown 4662960.0 379 Ramon Sessions Washington Wizards 7.0 PG 30.0 6-3 190.0 Nevada 2170465.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN [458 rows x 9 columns]
Depois de ordenar
# importando o pacote pandas import pandas as pd # Criando um dataframe a partir de um arquivo csv data = pd.read_csv("nba.csv") # Ordenar o dataframe por time e por nome data.sort_values( ["Team", "Name"], axis=0, ascending=True, inplace=True ) print(data)
Conforme mostrado abaixo, a equipe é classificada primeiro em ordem crescente e, em seguida, os nomes são classificados em ordem crescente para cada nome de equipe.
Name Team Number Position Age Height Weight College Salary 312 Al Horford Atlanta Hawks 15.0 C 30.0 6-10 245.0 Florida 12000000.0 318 Dennis Schroder Atlanta Hawks 17.0 PG 22.0 6-1 172.0 NaN 1763400.0 323 Jeff Teague Atlanta Hawks 0.0 PG 27.0 6-2 186.0 Wake Forest 8000000.0 309 Kent Bazemore Atlanta Hawks 24.0 SF 26.0 6-5 201.0 Old Dominion 2000000.0 311 Kirk Hinrich Atlanta Hawks 12.0 SG 35.0 6-4 190.0 Kansas 2854940.0 .. ... ... ... ... ... ... ... ... ... 376 Markieff Morris Washington Wizards 5.0 PF 26.0 6-10 245.0 Kansas 8000000.0 375 Nene Hilario Washington Wizards 42.0 C 33.0 6-11 250.0 NaN 13000000.0 378 Otto Porter Jr. Washington Wizards 22.0 SF 23.0 6-8 198.0 Georgetown 4662960.0 379 Ramon Sessions Washington Wizards 7.0 PG 30.0 6-3 190.0 Nevada 2170465.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN [458 rows x 9 columns]
Exemplo #2: lista de passagem para parâmetro ascendente.
Conforme mostrado no exemplo acima, um dataframe pode ser classificado em relação a várias colunas, passando uma lista para o parâmetro by
. Também podemos passar uma lista para o parâmetro ascending
para dizer ao pandas quais colunas classificar e como.
O índice de Boolean no parâmetro ascending
deve ser igual ao índice do nome da coluna no parâmetro by
.
import pandas as pd data = pd.read_csv("nba.csv") data.sort_values( ["Team", "Name"], axis=0, ascending=[True,False], inplace=True ) print(data)
Conforme mostrado abaixo abaixo, o dataframe é classificado em ordem crescente do nome da equipe e para cada nome da equipe, os nomes são classificados em ordem decrescente.
Name Team Number Position Age Height Weight College Salary 322 Walter Tavares Atlanta Hawks 22.0 C 24.0 7-3 260.0 NaN 1000000.0 310 Tim Hardaway Jr. Atlanta Hawks 10.0 SG 24.0 6-6 205.0 Michigan 1304520.0 321 Tiago Splitter Atlanta Hawks 11.0 C 31.0 6-11 245.0 NaN 9756250.0 320 Thabo Sefolosha Atlanta Hawks 25.0 SF 32.0 6-7 220.0 NaN 4000000.0 315 Paul Millsap Atlanta Hawks 4.0 PF 31.0 6-8 246.0 Louisiana Tech 18671659.0 .. ... ... ... ... ... ... ... ... ... 380 Garrett Temple Washington Wizards 17.0 SG 30.0 6-6 195.0 LSU 1100602.0 372 Drew Gooden Washington Wizards 90.0 PF 34.0 6-10 250.0 Kansas 3300000.0 369 Bradley Beal Washington Wizards 3.0 SG 22.0 6-5 207.0 Florida 5694674.0 368 Alan Anderson Washington Wizards 6.0 SG 33.0 6-6 220.0 Michigan State 4000000.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN [458 rows x 9 columns]
Exemplo #3: Classificação usando 3 colunas.
No exemplo a seguir, o mesmo dataframe é classificado pelo nome da equipe. Para cada equipe, o dataframe é classificado por idade e, para cada mesma idade, o dataframe é classificado por altura. Este exemplo explicará como a classificação de multiparâmetros funciona no DataFrame.
import pandas as pd data=pd.read_csv("nba.csv") # Ordena o dataframe por time, idade e altura data.sort_values( ["Team", "Age", "Height"], axis=0, ascending=[False,True,False], inplace=True ) print(data)
Conforme mostrado abaixo, o nome da equipe é classificado primeiro, depois a Idade e, para cada idade, a altura é classificada. Na equipe “Washington Wizards” há 3 jogadores com 30 anos de idade. Essas 3 pessoas são classificadas por altura em ordem crescente.
Name Team Number Position Age Height Weight College Salary 377 Kelly Oubre Jr. Washington Wizards 12.0 SF 20.0 6-7 205.0 Kansas 1920240.0 369 Bradley Beal Washington Wizards 3.0 SG 22.0 6-5 207.0 Florida 5694674.0 378 Otto Porter Jr. Washington Wizards 22.0 SF 23.0 6-8 198.0 Georgetown 4662960.0 371 Jarell Eddie Washington Wizards 8.0 SG 24.0 6-7 218.0 Virginia Tech 561716.0 382 John Wall Washington Wizards 2.0 PG 25.0 6-4 195.0 Kentucky 15851950.0 .. ... ... ... ... ... ... ... ... ... 321 Tiago Splitter Atlanta Hawks 11.0 C 31.0 6-11 245.0 NaN 9756250.0 320 Thabo Sefolosha Atlanta Hawks 25.0 SF 32.0 6-7 220.0 NaN 4000000.0 314 Kyle Korver Atlanta Hawks 26.0 SG 35.0 6-7 212.0 Creighton 5746479.0 311 Kirk Hinrich Atlanta Hawks 12.0 SG 35.0 6-4 190.0 Kansas 2854940.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN [458 rows x 9 columns]
Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Dataframe.sort_values() | Set-2.
0 comentários:
Postar um comentário