Oi André! Tudo bem com você?
Existem diferentes formas de selecionarmos informações específicas em um dataframes. Alguns métodos muito utilizados para isso são: loc
, iloc
e o query
.
Vamos fazer um pequeno exemplo com cada um deles para entendermos um pouco sobre como eles funcionam.
Para os exemplos a seguir, utilizaremos o seguinte dataframe:
| Motor | Ano | Quilometragem | Zero_km | Valor |
---|
Jetta | Motor 4.0 Turbo | 2019 | 0 | True | 88000 |
Passat | Motor Diesel | 2003 | 5712 | False | 106000 |
Crossfox | Motor Diesel V8 | 1991 | 37123 | False | 72000 |
DS5 | Motor Diesel | 2019 | 0 | True | 89000 |
Fusca | Motor 1.6 | 1990 | 120000 | False | 32000 |
1 - loc()
e iloc()
:
O iloc
e o loc
são métodos utilizados para selecionar colunas ou linhas específicas de um dataframe. O iloc seleciona por índice, enquanto o loc seleciona por nome da coluna ou linha. Em ambos, passamos os argumentos da seguinte forma:
# iloc
dataframe.iloc[indice_da_linha, indice_da_coluna]
# loc
dataframe.loc[nome_da_linha, nome_da_coluna]
Suponhamos que, no dataframe mostrado anteriormente, queremos selecionar apenas as linhas denominadas “Crossfox” e “DS5”. Para fazer essa seleção, podemos fazer o seguinte:
# Utilizando o loc
df.loc['Crossfox':'DS5', :]
# Utilizando o iloc
df.iloc[2:4, :]
Fazendo de ambas as formas, teremos o seguinte resultado:
| Motor | Ano | Quilometragem | Zero_km | Valor |
---|
Crossfox | Motor Diesel V8 | 1991 | 37123 | False | 72000 |
DS5 | Motor Diesel | 2019 | 0 | True | 89000 |
Se quisermos que esses métodos retornem todas as linhas ou todas as colunas, basta utilizarmos os dois pontos (:) conforme utilizei para selecionar as colunas nos exemplos mostrados anteriormente.
Vou deixar aqui alguns outros exemplos utilizando esses métodos
# selecionando apenas a coluna Quilometragem
df.loc[:, 'Quilometragem']
df.iloc[:, 2]
# selecionando apenas a linha “Jetta”
df.loc['Jetta', :]
df.iloc[0, :]
2 - query()
O método query também é muito utilizado para selecionar informações específicas em um dataframe.
Utilizando o dataframe anterior, suponhamos que queremos selecionar apenas os dados onde a coluna "Zero_km" for igual a True
df.query("Zero_km == True")
Dessa forma, teremos como resultado:
| Motor | Ano | Quilometragem | Zero_km | Valor |
---|
Jetta | Motor 4.0 Turbo | 2019 | 0 | True | 88000 |
DS5 | Motor Diesel | 2019 | 0 | True | 89000 |
Agora, se quisermos selecionar apenas os dados onde “Zero_km” seja True e o “Valor” seja maior que 88000.0, podemos fazer assim:
df.query("Zero_km == True and Valor > 88000.0")
E o nosso resultado será o seguinte:
| Motor | Ano | Quilometragem | Zero_km | Valor |
---|
DS5 | Motor Diesel | 2019 | 0 | True | 89000 |
Esses são só alguns exemplos simples das aplicações desses métodos, mas pesquisando um pouco mais na documentação do pandas, com certeza você irá se deparar com diferentes formas de selecionar informações específicas em um dataframe.
Vou deixar aqui o link dos métodos que utilizei nos exemplos acima e um guia de usuário interessante do pandas que aborda sobre esse assunto (estão todos em inglês):
Espero ter ajudado! Qualquer dúvida estou por aqui :)
Bons estudos!