Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ajuda para criar um interador

Caros amigos e amigas da Alura, boa tarde! Recentemente eu finalizei o curso Python para Data Science: Funções, Pacotes e Pandas básico. Afim de explorar minhas habilidades aprendidas no curso resolvi brincar um pouco com a base de dados sandp 500, que é uma base com as cotações das 500 empresas que compõe o índice S&P 500 na bolsa americana ( disponível em:https://www.kaggle.com/camnugent/sandp500). Meu objetivo inicial é só de trabalhar com ação da apple (aapl na base de dados). Pois bem, estava todo feliz fazendo meus slices, seleções básicas e etc até que eu tive a ideia de calcular a volatilidade da ação. A volatilidade nada mais é do que o desvio padrão da subtração do preço de fechamento do dia n pelo preço de fechamento do dia n-1.

Eu sei que eu tenho que encher meu dataframe (de nome aapl_stock) com uma coluna chamada volatilidade onde a linha 0 tera volatilidade 0, a linha 1 terá volatilidade a partir da conta: aapl_stock['close'][1] - aapl_stock['close'[0], a linha 2 terá volatilidade a partir da conta: aapl_stock['close'][2] - aapl_stock['close'][1] e assim por diante. Minha duvida é como montar isso dentro de um for? Desde já, agradeço a atenção de todos!

2 respostas
solução!

E aí, Eduado. Tudo firme?

Dei uma olhadinha aqui e montei uma solução com for pra você.

import pandas as pd
import numpy as np

df = pd.read_csv('all_stocks_5yr.csv')
df_apple = df[df['Name'] == 'AAPL'].copy() # .copy() cria de fato um dataframe separado

# uma lista vazia pra receber os valorec calculados
vol = []

for i in range(df_apple.shape[0]): # .shape[0] retorna o número de linhas do df
  if i == 0:
    vol.append(0)
  else:
    # a notação iloc seleciona os índices de forma indireta (0, 1559) porque os indices 
    # do df_apple seguem sendo os mesmo do df original
    partial_vol = df_apple.iloc[i]['close'] - df_apple.iloc[i-1]['close'] 
    vol.append(partial_vol)

# cria a coluna com os dados da lista recém criada
df_apple['volatility'] = vol

volatility_std = np.std(df_apple['volatility'])
volatility_std

Espero ter ajudado.

Abraço,

Muito obrigado pela ajuda! Super deu certo e o mais importante: entendi tudinho que foi explicado. Obrigado por me ajudar com meus estudos! Abraço