gershwin.pages.dev

Como criar um script para detectar inconsistências em séries temporais?

Detectar inconsistências em séries temporais é fundamental para garantir a qualidade dos dados e a precisão das análises. Com um script automatizado, você pode identificar rapidamente valores ausentes, duplicados, outliers e problemas de ordem cronológica, economizando horas de trabalho manual e evitando erros que podem comprometer todo o projeto.

Pré-requisitos

Passo 1: Importar bibliotecas e carregar os dados

Comece importando as bibliotecas necessárias e carregando seu arquivo de dados. O script abaixo lê um arquivo CSV e converte a coluna de data para o formato datetime.

import pandas as pd
import numpy as np

# Carregar arquivo CSV
df = pd.read_csv('dados.csv')

# Converter coluna 'data' para datetime
df['data'] = pd.to_datetime(df['data'], errors='coerce')

# Definir 'data' como índice
df.set_index('data', inplace=True)

print("Dados carregados com sucesso!")
print(df.head())

Passo 2: Detectar valores ausentes e duplicados

Verifique se há registros faltantes ou datas repetidas, que são inconsistências comuns em séries temporais.

# Verificar valores ausentes
missing = df.isnull().sum()
print("\nValores ausentes por coluna:")
print(missing)

# Detectar duplicados
duplicates = df[df.index.duplicated()]
print("\nRegistros duplicados:")
print(duplicates)

Passo 3: Identificar outliers e intervalos irregulares

Outliers podem indicar erros de medição, enquanto intervalos irregulares podem revelar dados perdidos. Use o método IQR para detectar outliers e verifique a regularidade dos intervalos.

# Detectar outliers (método IQR)
Q1 = df['valor'].quantile(0.25)
Q3 = df['valor'].quantile(0.75)
IQR = Q3 - Q1
outliers = df[(df['valor'] < (Q1 - 1.5 * IQR)) | (df['valor'] > (Q3 + 1.5 * IQR))]
print("\nOutliers detectados:")
print(outliers)

# Verificar intervalos regulares
df = df.asfreq('D')  # Amostragem diária
gaps = df[df.isna().any(axis=1)]
print("\nIntervalos com dados ausentes:")
print(gaps)

Passo 4: Gerar relatório de inconsistências

Compile todas as inconsistências encontradas em um relatório claro e exporte para um arquivo CSV para análise posterior.

# Relatório de inconsistências
report = pd.DataFrame({
    'tipo': ['missing', 'duplicates', 'outliers'],
    'count': [missing.sum(), len(duplicates), len(outliers)]
})
report.to_csv('relatorio_inconsistencias.csv', index=False)
print("\nRelatório salvo em 'relatorio_inconsistencias.csv'")

Exemplo Prático

Data Valor Status
2024-01-01 100 OK
2024-01-02 NaN Faltante
2024-01-03 100 Duplicado
2024-01-05 200 Gap
2024-01-06 5000 Outlier

Conclusão

Com este script, você automatiza a detecção de inconsistências em séries temporais em questão de segundos, garantindo a integridade dos dados e a confiabilidade das suas análises. Basta ajustar as colunas e frequência de acordo com seu dataset, e o script fará o resto.