Crescimento proporcional entre linhas (time series) utilizando pandas
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()
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.