Crescimento proporcional entre linhas (time series) utilizando pandas

(Last Updated On: 3 de dezembro de 2018)

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.

FIQUE POR DENTRO

Tech Education Leader no Alura

Próximo ArtigoCriando gráficos no Python com a Matplotlib