fbpx
Sigmoidal
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
  • English
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
Sigmoidal
Sem Resultado
Ver Todos Resultados

Séries Temporais (Time Series) com Python

Carlos Melo por Carlos Melo
março 2, 2020
em Blog, Data Science, Python, Teoria, Tutoriais
5
155
COMPARTILHAMENTOS
5.2k
VIEWS
Publicar no LinkedInCompartilhar no FacebookCompartilhar no Whatsapp

Séries temporais representam uma fatia importante do campo do Data Science, e envolvem problemas como previsão de demanda, vendas e até mesmo o mercado financeiro.

Já parou para pensar na dificuldade de interpretar gráficos ou números que têm sazonalidade, ou seja, que não seguem o mesmo padrão ao longo do ano?

Uma loja de varejo vai vender muito mais no natal do que no carnaval, isso é intuitivo para nós. Mas como identificar esse comportamento em gráficos? Como fazer uma previsão com isso?

Se você nunca escutou falar no termo séries temporais (ou time series, do inglês), hoje farei uma breve introdução sobre o tema usando Python.

O que são Séries Temporais?

Séries temporais são uma séries de observações registradas em intervalos de tempo regulares.

Séries Temporais com Python

Registrar o tempo faz parte da atividade humana há milênios. Seja para planejar, criar cronogramas ou organizar eventos, estamos muito acostumados a trabalhar no presente, considerando o passado, para “prever” o futuro.

Normalmente, se usa o conceito de séries temporais para:

  • Identificar a natureza do fenômeno representado pela sequência de observações para encontrar padrões de comportamentos; e
  • Usar modelos estatísticos para prever valores futuros, baseando-se em resultados do passado.

Como exemplos de fenômenos que podem ser acompanhados e registrados ao longo do tempo estão:

  • Movimentação do preço de ações na Bolsa de Valores.
  • Tamanho da população de uma cidade, estado ou país.
  • Vendas trimestrais de uma loja de varejo no segmento da moda.
  • Consumo de energia elétrica de um condomínio de casas.
  • Demanda de passageiros de uma companhia aérea ao longo do ano.

Componentes de uma Série Temporal

Uma série temporal não pode utilizar técnicas tradicionais diretamente. Imagine que ao aplicar diretamente um modelo de regressão a uma séries, você ignora completamente a dimensão tempo.

Por isso, antes mesmo de explorar um gráfico temporal, é necessário conhecer 2 componentes básicos das time series.

Tendência

Tendência é a direção geral de alguma coisa que está se desenvolvendo ou evoluindo no eixo do tempo.

Tendência de Séries Temporais

No gráfico acima, você pode ver que existe uma tendência de queda nas vendas do uma empresa, mesmo com oscilações ao longo dos anos.

Plotar uma reta sobre esse gráfico ajuda a identificar rapidamente essa tendência.

Sazonalidade

Sazonalidade é qualquer mudança ou padrão previsível em uma série temporal.

Essa oscilação pode ser recorrente ou se repetir ao longo de um determinado período de tempo. Dependendo o ruído nos dados obtidos, também é facilmente detectada em gráficos como esse abaixo.

O gráfico do número de visitantes do Parque Nacional Abel Tasman (Nova Zelândia) permite identificar que há um pico entre os meses de dezembro e janeiro.

Também conseguimos identificar que setembro é o mês mais tranquilo, com menor número de visitantes.

Como separar os componentes?

Até agora, identificamos os dois componentes no olho. Porém, isso não me parece muito científico.

Existem métodos matemáticos para fazer essa separação, considerando a natureza aditiva ou multiplicativa de um gráfico. Vou te mostrar como separar a tendência e sazonalidade usando o Python.

# importar pacotes e setar configurações de plots
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose
import matplotlib.pyplot as plt
import seaborn as sns
# url do dataset
dataset_path = "https://raw.githubusercontent.com/carlosfab/escola-data-science/master/datasets/electricity_consumption/Electric_Production.csv"
# importar o csv para um dataframe
df = pd.read_csv(dataset_path)
# ver as 5 primeiras entradas
df.head()

Acima, importei algumas bibliotecas, incluindo o pacote estatístico statsmodels.

Também importei um conjunto de dados que mostra a produção de energia elétrica ao longo de alguns anos. Vamos plotar os dados e ver o seu comportamento.

# plotar gráfico de consumo de eletricidade
plt.plot(df.index, df.Value);

Podemos identificar uma tendência de crescimento na produção de energia elétrica, assim como ver um padrão de topos e fundos (oscilações).

Usando seasonal_decompose é possível gerar gráficos individuais, que servirão de insumo para uma fase de análise exploratória.

# salvar a decomposicao em result
result = seasonal_decompose(df)
# plotar os 4 gráficos
fig, (ax1,ax2,ax3, ax4) = plt.subplots(4,1, figsize=(12,8))
result.observed.plot(ax=ax1)
result.trend.plot(ax=ax2)
result.seasonal.plot(ax=ax3)
result.resid.plot(ax=ax4)
plt.tight_layout()

A função que usamos conseguiu decompor o gráfico em 4. Veja como ficou muito mais fácil ver cada um desses componentes separadamente.

Os plots gerados pela biblioteca statsmodels foram:

  1. Observação original
  2. Tendência
  3. Sazonalidade
  4. Residual

A oscilação (colocada horizontalmente) foi separada da tendência. Aquilo que não pôde ser identificado ou separado da observação original é o ruído, chamado aqui de residual.

Técnicas tradicionais e Séries Temporais

Agora que você aprendeu o que são elas, tenho certeza que vai passar a olhar de outra maneira para os seus dados.

Sempre raciocine se o tempo interfere de alguma maneira nas suas variáveis. Caso a resposta seja sim, não adianta tentar aplicar técnicas tradicionais para fazer previsões.

Aprenda a fazer esse tipo de exploração e conhecer modelos e frameworks específicos para as séries.

No meu próximo artigo, irei te mostrar como fazer previsões em cima de time series 🙂

Aproveitando, queria te convidar para conhecer a Escola de Data Science (EDS), a primeira escola com aulas semanas (ao vivo) nessa área (inclusive, a primeira aula da EDS foi exatamente sobre Séries Temporais)

Clique neste link e ganhe 7 dias grátis para você conhecer a minha metodologia 🙂

Compartilhar11Compartilhar62Enviar
Post Anterior

Aplicações de Machine Learning nos Esportes

Próximo Post

Reduzindo Turnover Com Machine Learning

Carlos Melo

Carlos Melo

Engenheiro de Visão Computacional graduado em Ciências Aeronáuticas pela Academia da Força Aérea (AFA) e Mestre em Engenharia Aeroespacial pelo Instituto Tecnológico de Aeronáutica (ITA).

Relacionado Artigos

Curso de Pós-Graduação em Data Science
Data Science

Vale a pena fazer uma Pós-Graduação em Data Science?

por Carlos Melo
janeiro 20, 2025
Review do Livro “Mãos à obra: Aprendizado de Máquina com Scikit-Learn, Keras & TensorFlow”
Livros

Review do Livro “Mãos à obra: Aprendizado de Máquina com Scikit-Learn, Keras & TensorFlow”

janeiro 18, 2025
Carlos Melo e Sérgio Sacani – Ciência Sem Fim
Youtube

Carlos Melo e Sérgio Sacani – Ciência Sem Fim

por Carlos Melo
janeiro 16, 2025
Carlos Melo da Pós Graduação em Data Science do Sigmoidal
Aeroespacial

Oportunidades no Setor Espacial para Cientistas de Dados

por Carlos Melo
janeiro 15, 2025
Visão Computacional

Processamento de Nuvens de Pontos com Open3D e Python

por Carlos Melo
janeiro 2, 2025
Próximo Post
Reduzindo Turnover Com Machine Learning

Reduzindo Turnover Com Machine Learning

Comentários 5

  1. Matheus Duzzi Ribeiro says:
    5 anos atrás

    Olá Carlos, primeiramente sou um grande apreciador do seu conteúdo, parabéns! Segundo, quando executamos seasonal_decompose() pode gerar um erro segundo as normativas de numpy/pandas.
    Uma forma de corrigir é:
    my_pandas_series = pd.Series(df.Value)
    result = seasonal_decompose(my_pandas_series.values, freq=3)
    Abraço!

    Responder
  2. Edson Lima says:
    5 anos atrás

    Estou recebendo este erro: ValueError: could not convert string to float: ’01-01-2018′

    Responder
  3. Rafael says:
    4 anos atrás

    Muito bom seu artigo, estou estudando e ele me foi bem útil.
    Quero apenas contribuir com uma correção:
    Quando fui testar sua solução, importei o dataset para um dataframe mas seu índice não ficou como datetime.
    Foi então necessário converter a coluna DATE para o index:
    df[‘DATE’] = pd.to_datetime(df[‘DATE’])#, dayfirst=True)
    df.set_index(‘DATE’, inplace=True)
    Apenas isso.
    Abraços

    Responder
  4. Diego Segovia says:
    3 anos atrás

    Excelente conteúdo!
    Não é fácil achar um conteúdo didático sobre statcmodels.tsa por aí e você fez com maestria!
    Consegui explorar bem melhor meus dados com este conteúdo, muito obrigado.

    Responder
    • Carlos Melo Carlos Melo says:
      2 anos atrás

      Muito obrigado pelo comentário!

      Responder

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pós-Graduação em Data Science Pós-Graduação em Data Science Pós-Graduação em Data Science

Mais Populares

  • Introdução ao MediaPipe e Pose Estimation

    Introdução ao MediaPipe e Pose Estimation

    451 compartilhamentos
    Compartilhar 180 Tweet 113
  • Equalização de Histograma com OpenCV e Python

    112 compartilhamentos
    Compartilhar 45 Tweet 28
  • ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

    385 compartilhamentos
    Compartilhar 154 Tweet 96
  • Geometria da Formação de Imagens: Matrizes, Transformações e Sistemas de Coordenadas

    368 compartilhamentos
    Compartilhar 147 Tweet 92
  • Redes Neurais Convolucionais com Python

    92 compartilhamentos
    Compartilhar 37 Tweet 23
  • Em Alta
  • Comentários
  • Mais Recente
Como Tratar Dados Ausentes com Pandas

Como Tratar Dados Ausentes com Pandas

agosto 13, 2019
Como usar o DALL-E 2 para gerar imagens a partir de textos

Como usar o DALL-E 2 para gerar imagens a partir de textos

dezembro 25, 2022
Introdução ao MediaPipe e Pose Estimation

Introdução ao MediaPipe e Pose Estimation

julho 15, 2023

ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

abril 10, 2023
Como Analisar Ações da Bolsa com Python

Como Analisar Ações da Bolsa com Python

15
Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

13
Como Aprender Data Science?

Como Aprender Data Science?

9
Qual o Cenário de Data Science no Brasil hoje?

Qual o Cenário de Data Science no Brasil hoje?

8
DeepSeek vazamento de dados de usuários

DeepSeek: Vazamento de dados expõe dados de usuários

fevereiro 1, 2025
DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA

DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA?

janeiro 25, 2025
Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

janeiro 22, 2025
Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

janeiro 21, 2025

Seguir

  • 🇺🇸 Green Card por Habilidade Extraordinária em Data Science e Machine Learning

Após nossa mudança para os EUA, muitas pessoas me perguntaram como consegui o Green Card tão rapidamente. Por isso, decidi compartilhar um pouco dessa jornada.

O EB-1A é um dos vistos mais seletivos para imigração, sendo conhecido como “The Einstein Visa”, já que o próprio Albert Einstein obteve sua residência permanente através desse processo em 1933.

Apesar do apelido ser um exagero moderno, é fato que esse é um dos vistos mais difíceis de conquistar. Seus critérios rigorosos permitem a obtenção do Green Card sem a necessidade de uma oferta de emprego.

Para isso, o aplicante precisa comprovar, por meio de evidências, que está entre os poucos profissionais de sua área que alcançaram e se mantêm no topo, demonstrando um histórico sólido de conquistas e reconhecimento.

O EB-1A valoriza não apenas um único feito, mas uma trajetória consistente de excelência e liderança, destacando o conjunto de realizações ao longo da carreira.

No meu caso específico, após escrever uma petição com mais de 1.300 páginas contendo todas as evidências necessárias, tive minha solicitação aprovada pelo USCIS, órgão responsável pela imigração nos Estados Unidos.

Fui reconhecido como um indivíduo com habilidade extraordinária em Data Science e Machine Learning, capaz de contribuir em áreas de importância nacional, trazendo benefícios substanciais para os EUA.

Para quem sempre me perguntou sobre o processo de imigração e como funciona o EB-1A, espero que esse resumo ajude a esclarecer um pouco mais. Se tiver dúvidas, estou à disposição para compartilhar mais sobre essa experiência! #machinelearning #datascience
  • 🚀Domine a tecnologia que está revolucionando o mundo.

A Pós-Graduação em Visão Computacional & Deep Learning prepara você para atuar nos campos mais avançados da Inteligência Artificial - de carros autônomos a robôs industriais e drones.

🧠 CARGA HORÁRIA: 400h
💻 MODALIDADE: EAD
📅 INÍCIO DAS AULAS: 29 de maio

Garanta sua vaga agora e impulsione sua carreira com uma formação prática, focada no mercado de trabalho.

Matricule-se já!

#deeplearning #machinelearning #visãocomputacional
  • Green Card aprovado! 🥳 Despedida do Brasil e rumo à nova vida nos 🇺🇸 com a família!
  • Haverá sinais… aprovado na petição do visto EB1A, visto reservado para pessoas com habilidades extraordinárias!

Texas, we are coming! 🤠
  • O que EU TENHO EM COMUM COM O TOM CRUISE??

Clama, não tem nenhuma “semana” aberta. Mas como@é quinta-feira (dia de TBT), olha o que eu resgatei!

Diretamente do TÚNEL DO TEMPO: Carlos Melo &Tom Cruise!
  • Bate e Volta DA ITÁLIA PARA A SUÍÇA 🇨🇭🇮🇹

Aproveitei o dia de folga após o Congresso Internacional de Astronáutica (IAC 2024) e fiz uma viagem “bate e volta” para a belíssima cidade de Lugano, Suíça.

Assista ao vlog e escreve nos comentários se essa não é a cidade mais linda que você já viu!

🔗 LINK NOS STORIES
  • Um paraíso de águas transparentes, e que fica no sul da Suíça!🇨🇭 

Conheça o Lago de Lugano, cercado pelos Alpes Suíços. 

#suiça #lugano #switzerland #datascience
  • Sim, você PRECISA de uma PÓS-GRADUAÇÃO em DATA SCIENCE.
  • 🇨🇭Deixei minha bagagem em um locker no aeroporto de Milão, e vim aproveitar esta última semana nos Alpes suíços!
  • Assista à cobertura completa no YT! Link nos stories 🚀
  • Traje espacial feito pela @axiom.space em parceria com a @prada 

Esse traje será usados pelos astronautas na lua.
para acompanhar as novidades do maior evento sobre espaço do mundo, veja os Stories!

#space #nasa #astronaut #rocket
  • INTERNATIONAL ASTRONAUTICAL CONGRESS - 🇮🇹IAC 2024🇮🇹

Veja a cobertura completa do evento nos DESTAQUES do meu perfil.

Esse é o maior evento de ESPAÇO do mundo! Eu e a @bnp.space estamos representando o Brasil nele 🇧🇷

#iac #space #nasa #spacex
  • 🚀 @bnp.space is building the Next Generation of Sustainable Rocket Fuel.

Join us in transforming the Aerospace Sector with technological and sustainable innovations.
  • 🚀👨‍🚀 Machine Learning para Aplicações Espaciais

Participei do maior congresso de Astronáutica do mundo, e trouxe as novidades e oportunidade da área de dados e Machine Learning para você!

#iac #nasa #spacex
  • 🚀👨‍🚀ACOMPANHE NOS STORIES

Congresso Internacional de Astronáutica (IAC 2024), Milão 🇮🇹
  • Projeto Aeroespacial do final de semana!👨‍🚀
Instagram Youtube LinkedIn Twitter
Sigmoidal

O melhor conteúdo técnico de Data Science, com projetos práticos e exemplos do mundo real.

Seguir no Instagram

Categorias

  • Aeroespacial
  • Artigos
  • Blog
  • Carreira
  • Cursos
  • Data Science
  • Deep Learning
  • Destaques
  • Entrevistas
  • IA Generativa
  • Livros
  • Machine Learning
  • Notícias
  • Python
  • Teoria
  • Tutoriais
  • Visão Computacional
  • Youtube

Navegar por Tags

camera calibration carreira chatgpt cientista de dados cnn computer vision Cursos dados desbalanceados data science data science na prática decision tree deep learning gpt-3 histograma IA generativa image formation inteligência artificial jupyter kaggle keras machine learning matplotlib mnist nft openai opencv overfitting pandas profissão python redes neurais redes neurais convolucionais regressão linear regressão logística salário scikit-learn seaborn sklearn tensorflow titanic tutorial visão computacional vídeo youtube árvore de decisão

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

Sem Resultado
Ver Todos Resultados
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
  • English

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.