Crescimento proporcional entre linhas (time series) utilizando pandas

Crescimento proporcional entre linhas (time series) utilizando pandas
Guilherme Silveira
Guilherme Silveira

Compartilhe

Quando trabalhamos com sequências de dados que representam pontos no tempo (time series) é muito comum entender o crescimento de um valor em função do tempo. Por exemplo, o preço de um produto ou uma ação que antes era 100 e agora 110 cresceu 110/100 - 1 = 10%, e depois se caiu para 105, caiu 105/110 - 1 = -4%.

Portanto a fórmula geral é valor / valor_anterior - 1. Em python podemos gerar alguns dados aleatórios:

import numpy as np
import pandas as pd

np.random.seed(234)
aleatorios = np.random.randint(low = 950, high = 1050, size=100)
df = pd.DataFrame(aleatorios, columns=["preco"])
df.head()
Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

Como o valor da linha n+1 vai ser dividido pelo valor da linha n temos algo como:


# linhas na posicao posterior (n+1): df.preco.shift(-1)
# linhas na posicao atual (n): df.preco

df['crescimento'] = df.preco.shift(-1).div(df.preco) - 1
df.head()

Mas, claro, como toda boa análise básica de time series, o pandas já fornece uma função do gênero para trabalharmos:


df['crescimento_direto'] = df.preco.pct_change()
df.head()

Você pode encontrar o notebook com o código aqui. E para saber mais sobre numpy, pandas e muito mais em nossos cursos de data science na Alura.

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science