Created
March 12, 2025 18:53
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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