terça-feira, 20 de abril de 2021

Python - Extraindo linhas de um DataFrame com o método loc

Pandas fornecem um método exclusivo para recuperar linhas de um DataFrame. O método DataFrame.loc[] é um método que usa apenas rótulos de índice e retorna linha ou dataframe se o rótulo de índice existir no DataFrame do chamador.

Sintaxe: pandas.DataFrame.loc[]

Parâmetros:

  • Index label: String ou lista de string de rótulo de índice de linhas

Tipo de retorno: Dataframe ou Series depende do parâmetro

Para baixar o CSV usado no código, clique aqui.

Exemplo #1: Extraindo uma única linha

Neste exemplo, a coluna Name é definida como a coluna de índice e, em seguida, duas linhas únicas são extraídas uma a uma na forma de série usando rótulo de índice de linhas.

# Importa o pacote pandas
import pandas as pd

# Criando DataFrame a partir de um arquico csv
data = pd.read_csv("nba.csv", index_col="Name")

# recuperar linhas pelo método loc
first = data.loc["Avery Bradley"]
second = data.loc["R.J. Hunter"]

print(first, "\n\n\n", second)

Conforme mostrado na saída abaixo, duas séries foram retornadas, pois havia apenas um parâmetro em ambos as vezes.

Saída:

Team        Boston Celtics        
Number                   0        
Position                PG        
Age                     25        
Height                 6-2        
Weight                 180        
College              Texas        
Salary         7.73034e+06        
Name: Avery Bradley, dtype: object 


 Team        Boston Celtics
Number                  28
Position                SG
Age                     22
Height                 6-5
Weight                 185
College      Georgia State
Salary         1.14864e+06
Name: R.J. Hunter, dtype: object

Exemplo #2: Parâmetros múltiplos

Neste exemplo, a coluna Name é definida como a coluna do índice e, em seguida, duas linhas únicas são extraídas ao mesmo tempo, passando uma lista como parâmetro.

# Importa o pacote pandas
import pandas as pd

# Criando DataFrame a partir de um arquico csv
data = pd.read_csv("nba.csv", index_col="Name")

# recuperar linhas pelo método loc
linhas = data.loc[["Avery Bradley", "R.J. Hunter"]]
  
# Verificando o tipo do objeto linhas
print(type(linhas))

print(linhas)

Conforme mostrado abaixo, desta vez o tipo de dados do valor retornado é um DataFrame. Ambas as linhas foram extraídas e exibidas como um novo DataFrame.

Saída:

<class 'pandas.core.frame.DataFrame'>
                         Team  Number Position   Age Height  Weight        College     Salary
Name
Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0          Texas  7730337.0
R.J. Hunter    Boston Celtics    28.0       SG  22.0    6-5   185.0  Georgia State  1148640.0

Exemplo #3: Extraindo várias linhas com o mesmo índice

Neste exemplo, a coluna Team é definida como a coluna de índice e um nome da coluna Team é passado para o método .loc para verificar se todos os valores com o mesmo nome da equipe foram retornados ou não.

# Importa o pacote pandas
import pandas as pd

# Criando DataFrame a partir de um arquico csv
data = pd.read_csv("nba.csv", index_col="Team")

# recuperar linhas pelo método loc
linhas = data.loc["Utah Jazz"]

# Verificando o tipo do objeto linhas
print(type(linhas))

print(linhas)

Conforme mostrado na saída do script acima, todas as linhas com o nome da equipe “Utah Jazz” foram retornadas na forma de um dataframe.

Saída:

<class 'pandas.core.frame.DataFrame'>
                     Name  Number Position   Age Height  Weight       College      Salary
Team
Utah Jazz   Trevor Booker    33.0       PF  28.0    6-8   228.0       Clemson   4775000.0
Utah Jazz      Trey Burke     3.0       PG  23.0    6-1   191.0      Michigan   2658240.0
Utah Jazz      Alec Burks    10.0       SG  24.0    6-6   214.0      Colorado   9463484.0
Utah Jazz      Dante Exum    11.0       PG  20.0    6-6   190.0           NaN   3777720.0
Utah Jazz  Derrick Favors    15.0       PF  24.0   6-10   265.0  Georgia Tech  12000000.0
Utah Jazz     Rudy Gobert    27.0        C  23.0    7-1   245.0           NaN   1175880.0
Utah Jazz  Gordon Hayward    20.0       SF  26.0    6-8   226.0        Butler  15409570.0
Utah Jazz     Rodney Hood     5.0       SG  23.0    6-8   206.0          Duke   1348440.0
Utah Jazz      Joe Ingles     2.0       SF  28.0    6-8   226.0           NaN   2050000.0
Utah Jazz   Chris Johnson    23.0       SF  26.0    6-6   206.0        Dayton    981348.0
Utah Jazz      Trey Lyles    41.0       PF  20.0   6-10   234.0      Kentucky   2239800.0
Utah Jazz    Shelvin Mack     8.0       PG  26.0    6-3   203.0        Butler   2433333.0
Utah Jazz       Raul Neto    25.0       PG  24.0    6-1   179.0           NaN    900000.0
Utah Jazz    Tibor Pleiss    21.0        C  26.0    7-3   256.0           NaN   2900000.0
Utah Jazz     Jeff Withey    24.0        C  26.0    7-0   231.0        Kansas    947276.0

Exemplo #4: Extração de linhas entre dois rótulos de índice

Neste exemplo, dois rótulos de índice de linhas são passados e todas as linhas que caem entre esses dois rótulos de índice foram retornadas (Ambos os rótulos de índice inclusivos).

# Importa o pacote pandas
import pandas as pd

# Criando DataFrame a partir de um arquico csv
data = pd.read_csv("nba.csv", index_col="Name")

# recuperar linhas pelo método loc
linhas = data.loc["Avery Bradley":"Isaiah Thomas"]

# Verificando o tipo do objeto linhas
print(type(linhas))

print(linhas)

Conforme mostrado abaixo, todas as linhas que caem entre os dois rótulos de índice passados são retornadas na forma de um DataFrame.

Saída:

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

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Extracting rows using .loc[].

Licença

0 comentários:

Postar um comentário