Pandas é uma poderosa biblioteca Python para manipulação de dados. Uma tarefa comum é excluir linhas de um DataFrame com base nos valores das colunas. Este artigo explora métodos eficientes para isso.
Sumário
- Exclusão Eficiente de Linhas com Máscara Booleana
- Usando o Método
.drop
(Menos Eficiente) - Considerações de Desempenho para Grandes Conjuntos de Dados
Exclusão Eficiente de Linhas com Máscara Booleana
Máscaras booleanas fornecem a maneira mais concisa e eficiente de remover linhas com base nos valores de uma coluna. Ela filtra diretamente o DataFrame usando uma condição booleana.
import pandas as pd
# DataFrame de exemplo
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 25, 35],
'City': ['Nova York', 'Londres', 'Paris', 'Tóquio']}
df = pd.DataFrame(data)
print("DataFrame original:n", df)
# Remover linhas onde Age é 25
df = df[df['Age'] != 25]
print("nDataFrame após remover linhas com Age 25:n", df)
df['Age'] != 25
cria uma Série booleana. True
indica linhas onde ‘Age’ não é 25. Usando isso para indexar df
filtra diretamente, mantendo apenas as linhas onde a condição é True
. Isso evita a etapa intermediária de encontrar índices, melhorando a velocidade e a eficiência de memória, especialmente para grandes conjuntos de dados.
Usando o Método .drop
(Menos Eficiente)
O método .drop
remove linhas pelo rótulo do índice. Para excluir com base nos valores da coluna, você precisa primeiro identificar os índices relevantes usando indexação booleana.
import pandas as pd
# DataFrame de exemplo (mesmo que antes)
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 25, 35],
'City': ['Nova York', 'Londres', 'Paris', 'Tóquio']}
df = pd.DataFrame(data)
print("DataFrame original:n", df)
# Identificar índices das linhas onde Age é 25
indices_to_drop = df[df['Age'] == 25].index
# Remover linhas usando .drop
df = df.drop(indices_to_drop)
print("nDataFrame após remover linhas com Age 25:n", df)
#Modificação no lugar (modifica o DataFrame original diretamente)
#df.drop(indices_to_drop, inplace=True)
Esta abordagem, embora clara, é menos eficiente que a máscara booleana, particularmente para DataFrames grandes, devido à etapa extra de identificar e depois descartar índices.
Considerações de Desempenho para Grandes Conjuntos de Dados
Para conjuntos de dados menores, a diferença de desempenho entre esses métodos pode ser insignificante. No entanto, com grandes conjuntos de dados, a máscara booleana supera significativamente o método .drop
. A máscara booleana opera diretamente nos dados subjacentes, enquanto .drop
envolve a criação de um novo DataFrame, potencialmente levando a problemas de memória e tempos de processamento mais lentos.