Data Science

Deleção Eficiente de Linhas em DataFrames Pandas

Spread the love

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

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *