Como usar loc e iloc no pandas?
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,
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]]
# 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]
# tambem podemos chamar diretamente pela linhadf.loc[‘ Justise Winslow’]
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’]]
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]
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'] = 2018df2.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
# 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
# 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
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:
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! :)