Python - NaN return(pandas - 重采样函数)

Python - NaN return (pandas - resample function)

我正在根据下面的 youtube link 进行金融研究,我想了解为什么我得到的是 NaN return 而不是预期的计算。我需要在此脚本中做什么才能达到预期值?

YouTube 案例:https://www.youtube.com/watch?v=UpbpvP0m5d8

import investpy as env
import numpy as np
import pandas as pd

lt = ['ABEV3','CEAB3','ENBR3','FLRY3','IRBR3','ITSA4','JHSF3','STBP3']
prices = pd.DataFrame()
for i in lt:
    df = env.get_stock_historical_data(stock=i, from_date='01/01/2020', to_date='29/05/2020',  country='brazil')
    df['Ativo'] = i
    prices = pd.concat([prices, df], sort=True)

pivoted = prices.pivot(columns='Ativo', values='Close')

e_r = pivoted.resample('Y').last().pct_change().mean()
e_r

Return:

Ativo
ABEV3   NaN
CEAB3   NaN
ENBR3   NaN
FLRY3   NaN
IRBR3   NaN
ITSA4   NaN
JHSF3   NaN
STBP3   NaN
dtype: float64

您需要更改 'from_date' 以拥有超过一年的数据。

您当前的脚本 returns 一行和 .pct_change() 在一行数据 returns NaN 上,因为没有前一行可以与之比较。

当我将 from_date 更改为 '01/01/2018'

import investpy as env
import numpy as np
import pandas as pd

lt = ['ABEV3','CEAB3','ENBR3','FLRY3','IRBR3','ITSA4','JHSF3','STBP3']
prices = pd.DataFrame()
for i in lt:
    df = env.get_stock_historical_data(stock=i, from_date='01/01/2018', to_date='29/05/2020',  country='brazil')
    df['Ativo'] = i
    prices = pd.concat([prices, df], sort=True)

pivoted = prices.pivot(columns='Ativo', values='Close')

e_r = pivoted.resample('Y').last().pct_change().mean()
e_r

我得到以下输出:

Ativo
ABEV3   -0.043025
CEAB3   -0.464669
ENBR3    0.180655
FLRY3    0.191976
IRBR3   -0.175084
ITSA4   -0.035767
JHSF3    1.283291
STBP3    0.223627
dtype: float64