Usando DataFrame.loc para acessar e manipular dados no Pandas
Published on
A manipulação de dados é fundamental para qualquer projeto de ciência de dados, e a biblioteca Pandas é uma das ferramentas mais populares usadas para essas tarefas. Dentro do Pandas, o método loc[] é frequentemente usado para acessar e filtrar dados em um DataFrame por rótulo ou matriz booleana. Neste artigo, vamos mergulhar na sintaxe e exemplos de uso do Pandas DataFrame loc[] e explorar suas vantagens sobre outros métodos.
Quer criar visualizações de dados rapidamente em Python?
PyGWalker é um projeto Python de código aberto que pode ajudar a acelerar o fluxo de trabalho de análise e visualização de dados diretamente em ambientes baseados em notebooks Jupyter.
PyGWalker (opens in a new tab) transforma seu DataFrame Pandas (ou DataFrame Polars) em uma IU visual, onde você pode arrastar e soltar variáveis para criar gráficos com facilidade. Basta usar o seguinte código:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Você pode executar o PyGWalker agora mesmo com esses notebooks on-line:
E não se esqueça de nos dar uma ⭐️ no GitHub!
O que é o Pandas DataFrame loc[]?
Pandas DataFrame loc[] é um método para selecionar e filtrar dados em um Pandas DataFrame. O método loc[] recebe um ou dois argumentos, que podem ser um rótulo de linha ou uma matriz booleana. Quando um rótulo de linha é fornecido, loc[] retorna um DataFrame contendo a(s) linha(s) que correspondem ao rótulo. Quando uma matriz booleana é fornecida, loc[] retorna um DataFrame contendo a(s) linha(s) onde a matriz booleana é True.
Como usar o Pandas DataFrame loc[]?
Acessar linhas e colunas por rótulo(s) usando o Pandas DataFrame loc[] é bastante simples. Aqui está um exemplo:
import pandas as pd
# Criando um DataFrame de amostra
df = pd.DataFrame({'Idade': [23, 24, 25, 26],
'Nome': ['John', 'Mike', 'Sarah', 'Rachel'],
'Notas': [85, 90, 80, 95],
'ID': ['A101', 'A102', 'A103', 'A104']})
# Acessando uma linha usando o rótulo da linha
linha = df.loc[1]
# Acessando várias linhas usando uma lista de rótulos de linha
linhas = df.loc[[0, 2]]
# Acessando uma coluna usando o rótulo da coluna
idades = df.loc[:, 'Idade']
# Acessando várias colunas usando uma lista de rótulos de coluna
subconjunto = df.loc[:, ['Nome', 'Notas']]
No exemplo acima, criamos um DataFrame de exemplo com quatro linhas e quatro colunas. Usamos loc[] para acessar linhas e colunas por label(s). Quando fornecemos um único label para loc[], ele retorna uma Series do Pandas, e quando são fornecidos vários labels, ele retorna um DataFrame.
Também podemos filtrar linhas com base em uma condição dada usando loc[]. Aqui está um exemplo:
# Filtrar linhas com base em uma condição
df_filtrado = df.loc[df['Idade'] > 24]
No exemplo acima, estamos usando loc[] para filtrar as linhas em que a coluna Idade é maior que 24.
Quais são as vantagens do uso do loc[] do Pandas DataFrame?
Uma das principais vantagens do uso do loc[] do Pandas DataFrame é sua capacidade de lidar com indexação baseada em rótulos. Como a indexação baseada em rótulos é mais intuitiva e legível do que a indexação baseada em inteiros, o uso de loc[] pode tornar seu código mais expressivo e menos propenso a erros.
Outra vantagem do loc[] é que você também pode usá-lo para atribuir novos valores a um subconjunto do DataFrame.
# Alterar valores para linhas específicas
df.loc[0:1, 'Idade'] = 24
No exemplo acima, estamos usando loc[] para alterar o valor da idade das duas primeiras linhas do DataFrame.
Como o Pandas DataFrame loc[] é diferente do Pandas iloc[]?
O Pandas iloc[] é semelhante ao loc[], mas em vez de indexação baseada em rótulos, o iloc[] usa indexação baseada em inteiros. Aqui está um exemplo:
# Acessar a primeira linha usando o iloc[]
df.iloc[0]
# Acessar linhas e colunas usando a posição de inteiros
df.iloc[0:2, 1:3]
No primeiro exemplo, estamos acessando a primeira linha do DataFrame usando iloc[]. No segundo exemplo, usamos o iloc[] para acessar um subconjunto do DataFrame usando as posições de inteiros.
Embora o iloc[] seja mais rápido que o loc[], é menos expressivo e pode levar a erros se o DataFrame for modificado. Além disso, uma vez que o iloc[] usa posições de inteiros, ele pode se tornar confuso se o DataFrame for classificado ou modificado, enquanto o loc[] é mais robusto a tais mudanças.
É possível selecionar/filtrar linhas e colunas por nomes/rótulos usando o Pandas DataFrame loc[]?
Sim, é possível selecionar/filtrar linhas e colunas por rótulos usando o Pandas DataFrame loc[]. Aqui está um exemplo:
# Filtrar linhas usando o rótulo da coluna e condição
df_filtrado = df.loc[df['Nome'] == 'Mike']
# Acesse um subconjunto de linhas e colunas usando rótulos
df_subconjunto = df.loc[0:1, ['Nome', 'Idade']]
No primeiro exemplo, estamos usando loc[] para filtrar linhas com base em uma coluna de condição usando um rótulo de coluna. No segundo exemplo, estamos acessando um subconjunto de linhas e colunas usando loc[] e rótulos de coluna.
Conclusão
Neste artigo, exploramos o método Pandas DataFrame loc[], sua sintaxe e exemplos e suas vantagens em relação a outros métodos. Mostramos como loc[] pode ser usado para acessar e filtrar dados com base em rótulo ou matriz booleana e como é diferente do indexação baseada em inteiro usando iloc[]. Ao usar o Pandas DataFrame loc[], você pode escrever um código mais expressivo e robusto para análise e manipulação de dados em Python.