Como usar loc e iloc no pandas?

Matheus Budkewicz
horaDeCodar
Published in
5 min readJul 16, 2018

Seguindo a série, hoje trago métodos de seleção de dados, os famoso loc e iloc,

E só para relembrar: esta série tem o intuito de resolver problemas repetitivos do cotidiano da análise, como também destrinchar meios de fazer certas ações, o que é o caso deste post.

Ei você leitor! Criei um novo blog para os meus conteúdos, pois o Medium mesmo sendo uma excelente plataforma, me limitava em alguns recursos, que acredito que podem atrapalhar seu aprendizado/leitura…

Você pode acessar cliquando aqui!

Obrigado pela atenção, e boa leitura! :)

Confira a parte um clicando aqui.

Conheça nosso canal no YouTube, com cursos gratuitos de qualidade e vídeos semanais, para acessar o canal clique aqui!

Então vamos la!

No pandas temos duas maneiras muito interessantes de resgatar os dados que queremos, são elas:

  • loc;
  • iloc;

Repositório com exemplos:

Antes de mais nada eu estou disponibilizando o notebook do post e o dataset,

Neste repositório você encontra o dataset e todo código utilizado neste tutorial, confira:

E também: saiba mais sobre o dataset aqui.

Preparando o ambiente:

Para iniciar qualquer analise devemos importar as bibliotecas que vamos usar, como também o dataset,

Importamos o pandas, lemos o dataset e testamos, nada de novo :)

Quando usar loc ou iloc?

Basicamente os dois métodos servem para resgatar dados, mas possuem características distintas na hora que vamos utilizá-los.

Vamos entender agora quais são as particularidades deles e os casos de uso para cada um.

loc:

Este método é primariamente baseado nas labels da colunas, porém podemos utilizar com um array booleano também.

Uma informação importante sobre loc é: quando nenhum item é encontrado ele retorna um KeyError.

Funcionamento do método:

O método funciona desta maneira:

df.loc[<linhas>, <colunas>]

Primeiro argumento são as linhas e o segundo as colunas a serem buscadas.

Exemplos de utilização:

#podemos chamar uma linha pelo seu índice
df.loc[5]
#ou com um array de índices
df.loc[[0,1,2]]
Seleção por índice e com array
# uma fatia, do quarto ao sétimo elemento (note que diferente do python puro, neste método a chave inicial e final estarão presente no resultado)df.loc[4:8]
Seleção por slice
# tambem podemos chamar diretamente pela linhadf.loc[‘ Justise Winslow’]
Selecionando pelo nome da linha

Para este último caso criei um novo dataset com um índice pelo nome dos jogadores, ou seja a primeira coluna de índice numérico passou a ser o nome deles.

E no próximo, selecionaremos por um array de índice e colunas seletivas, veja o exemplo:

#array de índices das linhas e colunas, 3 jogadores (as linhas) e 2 colunasdf2.loc[[‘Karl-Anthony Towns’, ‘Stanley Johnson’, ‘D`Angelo Russell’], [‘Position’, ‘ID’]] 
Selecionamos 3 jogadores, e queremos saber qual a posição e o ID dos mesmos

Esta próxima maneira de utilizar o loc é sensacional, podemos combinar operadores lógicos para chegar no resultado que queremos,

Vou selecionar os atletas que tem probabilidade de serem Superstars maior ou igual a 10%:

df.loc[(df['Superstar']*100) >= 10]
Atletas com 10% ou mais de chance de serem Superstars

Com o loc podemos também modificar os dados que selecionamos, veja o exemplo:

#Mudando os 5 primeiros registros para o ano de 2018
df2.loc[0:5, 'Draft Year'] = 2018
df2.head(5)

Vemos que os dados foram alterados de forma fácil na coluna Draft Year, loc se mostra um recurso poderoso para alterar dados também;

Este recurso é útil por exemplo na preparação dos dados.

Concluindo loc

Há outros casos de uso de loc, porém aqui conseguimos ver os principais, ou melhor dizendo, as maneiras que podem nos levar aos demais usos,

Vamos para o iloc!

iloc:

O indexador iloc é um tanto mais simples, ele seleciona por números inteiros das linhas, arrays ou por slice.

Como o loc, ele funciona desta maneira:

df.iloc[<linhas>, <colunas>]

Os dois argumentos são: linhas e colunas,

Podemos concluir que o iloc seleciona linhas e colunas por números, esta é uma boa definição para o recurso.

Vamos para os exemplos

# Linhas:
df.iloc[0] # Selecionado a primeira linha do dataset
df.iloc[-1] # Selecionando a última linha
Dois primeiros testes com iloc
# Colunas:
df.iloc[:,0] # Todos os dados da primeira coluna do dataset
df.iloc[0:5,-1] # Do primeiro ao quinto dado da última coluna
Cortei a imagem, é claro :D
Note que o primeiro elemento também está presente nos dados retornados do slice
Caso fizessemos a mesma coisa só que com array teriamos 6 elementos
# Seleção de múltiplas linhas e colunas:
df.iloc[0:3] # resgatando as primeiras três linhas do dataset
df.iloc[:, 1:3] # todos os dados da segunda e terceira coluna
df.iloc[[0,2,4], 5:8] # 1º,3º e 5º elementos e 6ª a 8ª colunas
Caso pedirmos ‘:’ pandas trará todos os dados
Um resgate de dados mais preciso, linhas e colunas específicas

Uma importante observação é que quando solicitamos a o iloc uma linha ele retorna um Pandas Series, já múltiplas retorna um Pandas DataFrame, confira os exemplos abaixo:

Diferençad de retorno entre seleção única e múltipla

Concluindo iloc

Como podemos ver os casos de uso do iloc são mais restritos, logo ele é bem menos utilizado que loc, mas ainda sim tem seu valor;

Basicamente ele é usado quando queremos selecionar dados de linhas e colunas pelo seu valor numérico de índice.

Conclusão

A utilização de ambos recursos é útil, porem loc se mostra mais versátil, pois podemos selecionar colunas pela nomenclatura delas o que torna o trabalho mais fácil;

Já o iloc depende dos números dos índices, o que torna mais rara sua utilização.

Apenas para conhecimento, há outro método de seleção chamado ix, porém o mesmo consta como deprecated, e não deve ser mais utilizado, em versões futuras deve ser eliminado do pandas.

Bom, creio que conseguimos atingir os objetivos, que eram:

  • Definir os métodos loc e iloc;
  • Utilização dos métodos;

Neste artigo é isso, obrigado a todos que leram e qualquer sugestão é bem-vinda,

Até o próximo! :)

--

--