Skip to content

Instantly share code, notes, and snippets.

@samuellangajr
Created March 12, 2025 18:53
Show Gist options
  • Save samuellangajr/5c4bf6c9028e29baffe19fe6917fd477 to your computer and use it in GitHub Desktop.
Save samuellangajr/5c4bf6c9028e29baffe19fe6917fd477 to your computer and use it in GitHub Desktop.
Escreva uma função que aplique um filtro de suavização (por exemplo, filtro de média ou gaussiano) a uma série temporal de dados de tráfego para reduzir ruídos.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def suavizar_serie_temporal(dados, janela=3):
"""
Aplica um filtro de suavização (média móvel) a uma série temporal de dados.
Args:
dados (pd.Series ou list): A série temporal de dados de tráfego.
janela (int): O tamanho da janela para o filtro de média (deve ser um número ímpar).
Returns:
pd.Series: A série temporal suavizada.
"""
# Converter dados para série temporal (caso não seja)
if not isinstance(dados, pd.Series):
dados = pd.Series(dados)
# Aplicar filtro de média (média móvel) com a janela definida
dados_suavizados = dados.rolling(window=janela, center=True).mean()
return dados_suavizados
# Exemplo de uso:
# Dados de tráfego fictícios (por exemplo, volume de tráfego por hora)
dados_trafego = [50, 55, 60, 70, 85, 90, 100, 110, 120, 130, 140, 150, 160]
# Aplicar o filtro de suavização
dados_suavizados = suavizar_serie_temporal(dados_trafego, janela=5)
# Plotar os dados originais e suavizados
plt.figure(figsize=(10, 6))
plt.plot(dados_trafego, label='Dados Originais', color='blue', marker='o')
plt.plot(dados_suavizados, label='Dados Suavizados', color='red', linestyle='--', marker='x')
plt.title('Série Temporal de Dados de Tráfego - Suavização')
plt.xlabel('Hora')
plt.ylabel('Volume de Tráfego')
plt.legend()
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment