domingo, 18 de abril de 2021

Python - Pandas Dataframe.sort_values() | Parte 2

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.

Licença

0 comentários:

Postar um comentário