terça-feira, 8 de dezembro de 2020

Python - Pandas Dataframe.sort_values() | Parte 1

A função do pandas sort_values() classifica um dataframe em ordem crescente ou decrescente da coluna passada. É diferente da função sorted do Python, uma vez que não pode classificar um dataframe e uma coluna particular não pode ser selecionada.

Vamos discutir sobre Dataframe.sort_values() Classificação de parâmetro único:

Sintaxe:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)

Cada parâmetro tem alguns valores padrão, exceto o parâmetro ‘by’.

Parâmetros:

by: Único/Lista de nomes de coluna pelos quais classificar o dataframe.
axis: 0 ou 'índice' para linhas e 1 ou 'colunas' para coluna.
ascending: valor booleano que classifica o dataframe em ordem crescente se True.
inplace: valor booleano. Faz as alterações no próprio dataframe transmitido, se True.
kind: String que pode ter três entradas (‘quicksort’, ‘mergesort’ ou ‘heapsort’) de algoritmo usado para ordenar o dataframe.
na_position: recebe duas entradas de string ‘last’ ou ‘first’ para definir a posição dos valores nulos. O padrão é ‘last’.

Tipo de devolução:

Retorna um dataframe classificado com as mesmas dimensões do dataframe do chamador da função.

Para obter o link para o arquivo CSV usado no código, clique aqui.

Exemplo #1: classificação por nome
No exemplo a seguir, um dataframe é criado a partir do arquivo csv e o dataframe é classificado em ordem crescente de nomes de jogadores.

Antes de classificar:

# importando o modulo pandas
import pandas as pd

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("nba.csv")
print(data.head(10))

Resultado:

            Name            Team  Number Position   Age Height  Weight            College      Salary
0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas   7730337.0
1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette   6796117.0
2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University         NaN
3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State   1148640.0
4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN   5000000.0
5   Amir Johnson  Boston Celtics    90.0       PF  29.0    6-9   240.0                NaN  12000000.0
6  Jordan Mickey  Boston Celtics    55.0       PF  21.0    6-8   235.0                LSU   1170960.0
7   Kelly Olynyk  Boston Celtics    41.0        C  25.0    7-0   238.0            Gonzaga   2165160.0
8   Terry Rozier  Boston Celtics    12.0       PG  22.0    6-2   190.0         Louisville   1824360.0
9   Marcus Smart  Boston Celtics    36.0       PG  22.0    6-4   220.0     Oklahoma State   3431040.0

Depois de classificar:

import pandas as pd

data = pd.read_csv("nba.csv")

# ordenando o dataframe por nome
# em ordem crecente
data.sort_values("Name", axis = 0, ascending = True,
                    inplace = True, na_position ='last') 

print(data.head(10))
                Name                    Team  Number Position   Age Height  Weight           College      Salary
152     Aaron Brooks           Chicago Bulls     0.0       PG  31.0    6-0   161.0            Oregon   2250000.0
356     Aaron Gordon           Orlando Magic     0.0       PF  20.0    6-9   220.0           Arizona   4171680.0
328   Aaron Harrison       Charlotte Hornets     9.0       SG  21.0    6-6   210.0          Kentucky    525093.0
404    Adreian Payne  Minnesota Timberwolves    33.0       PF  25.0   6-10   237.0    Michigan State   1938840.0
312       Al Horford           Atlanta Hawks    15.0        C  30.0   6-10   245.0           Florida  12000000.0
330     Al Jefferson       Charlotte Hornets    25.0        C  31.0   6-10   289.0               NaN  13500000.0
428  Al-Farouq Aminu  Portland Trail Blazers     8.0       SF  25.0    6-9   215.0       Wake Forest   8042895.0
368    Alan Anderson      Washington Wizards     6.0       SG  33.0    6-6   220.0    Michigan State   4000000.0
135    Alan Williams            Phoenix Suns    15.0        C  23.0    6-8   260.0  UC Santa Barbara     83397.0
444       Alec Burks               Utah Jazz    10.0       SG  24.0    6-6   214.0          Colorado   9463484.0

Conforme mostrado acima, a coluna de índice agora está confusa, pois o dataframe é classificado por Nome.

Exemplo #2: Mudança de posição de valores nulos

Nos dados fornecidos, existem muitos valores nulos em diferentes colunas que são colocados no último por padrão. Neste exemplo, o dataframe é classificado de acordo com a coluna 'Salary' e os valores nulos são mantidos no topo.

import pandas as pd

data = pd.read_csv("nba.csv")

# Ordenando o dataframe pela coluna 'Salary'
data.sort_values("Salary", axis = 0, ascending = True,
                    inplace = True, na_position ='first') 

print(data.head(15))

Conforme mostrado abaixo, os valores NaN estão no topo e depois disso vem o valor classificado de Salário.

Resultado:

                       Name                    Team  Number Position   Age Height  Weight                College   Salary
2              John Holland          Boston Celtics    30.0       SG  27.0    6-5   205.0      Boston University      NaN
46              Elton Brand      Philadelphia 76ers    42.0       PF  37.0    6-9   254.0                   Duke      NaN
171           Dahntay Jones     Cleveland Cavaliers    30.0       SG  35.0    6-6   225.0                   Duke      NaN
264           Jordan Farmar       Memphis Grizzlies     4.0       PG  29.0    6-2   180.0                   UCLA      NaN
269            Ray McCallum       Memphis Grizzlies     5.0       PG  24.0    6-3   190.0                Detroit      NaN
270          Xavier Munford       Memphis Grizzlies    14.0       PG  24.0    6-3   180.0           Rhode Island      NaN
273          Alex Stepheson       Memphis Grizzlies    35.0       PF  28.0   6-10   270.0                    USC      NaN
350           Briante Weber              Miami Heat    12.0       PG  23.0    6-2   165.0  Virginia Commonwealth      NaN
353           Dorell Wright              Miami Heat    11.0       SF  30.0    6-9   205.0                    NaN      NaN
397            Axel Toupane          Denver Nuggets     6.0       SG  23.0    6-7   210.0                    NaN      NaN
409              Greg Smith  Minnesota Timberwolves     4.0       PF  25.0   6-10   250.0           Fresno State      NaN
457                     NaN                     NaN     NaN      NaN   NaN    NaN     NaN                    NaN      NaN
32   Thanasis Antetokounmpo         New York Knicks    43.0       SF  23.0    6-7   205.0                    NaN  30888.0
291         Orlando Johnson    New Orleans Pelicans     0.0       SG  27.0    6-5   220.0       UC Santa Barbara  55722.0
130            Phil Pressey            Phoenix Suns    25.0       PG  25.0   5-11   175.0               Missouri  55722.0

Artigo escrito por Kartikaybhutani e traduzido por Acervo Lima de Python | Pandas Dataframe.sort_values() | Set-1

Licença

0 comentários:

Postar um comentário