Data Analysis

Dominando a Filtragem por Data em DataFrames Pandas

Spread the love

Filtrar DataFrames Pandas com eficiência com base em intervalos de datas é uma habilidade crucial na análise de dados. O Pandas fornece vários métodos para alcançar isso, cada um com seus pontos fortes e fracos. Este artigo explora quatro abordagens populares, comparando sua sintaxe, eficiência e casos de uso.

Sumário

Filtrando com Máscaras Booleanas

Máscaras booleanas oferecem a abordagem mais fundamental e flexível. Ela cria um array booleano (máscara) que filtra linhas com base em condições especificadas. Este método é altamente adaptável a cenários complexos.


import pandas as pd

data = {'Data': pd.to_datetime(['2023-10-26', '2023-11-15', '2023-12-01', '2024-01-10', '2024-02-20']),
        'Valor': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

data_inicio = pd.to_datetime('2023-11-01')
data_fim = pd.to_datetime('2024-01-01')

mascara = (df['Data'] >= data_inicio) & (df['Data'] <= data_fim)
df_filtrado = df[mascara]  #Mais eficiente que df.loc[mascara]
print(df_filtrado)

Usando o Método .query()

O método .query() fornece uma alternativa mais legível e concisa para filtragem. É particularmente benéfico para condições complexas.


data_inicio = '2023-11-01'
data_fim = '2024-01-01'

df_filtrado = df.query('@data_inicio <= Data <= @data_fim')
print(df_filtrado)

Empregando o Método .isin()

O método .isin() é adequado quando você precisa selecionar linhas com base em uma lista de datas específicas, em vez de um intervalo contínuo. É menos eficiente para grandes intervalos contínuos.


datas_incluir = pd.to_datetime(['2023-11-15', '2023-12-01'])
df_filtrado = df[df['Data'].isin(datas_incluir)]
print(df_filtrado)

Aproveitando o Método .between()

O método .between() oferece uma abordagem simplificada para selecionar linhas dentro de um intervalo de datas contínuo. É eficiente e fácil de ler.


data_inicio = pd.to_datetime('2023-11-01')
data_fim = pd.to_datetime('2024-01-01')

df_filtrado = df[df['Data'].between(data_inicio, data_fim, inclusive='both')] #argumento inclusive adicionado para clareza
print(df_filtrado)

Em resumo, o Pandas oferece diversos métodos para filtragem baseada em datas. A escolha ideal depende das suas necessidades específicas e estilo de codificação. Máscaras booleanas fornecem a máxima flexibilidade, .query() melhora a legibilidade e .between() simplifica a seleção de intervalos contínuos. Lembre-se de garantir que sua coluna de data seja do tipo datetime64 para desempenho ideal.

Deixe um comentário

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