Python-NaN返回(熊猫-重采样函数)

时间:2020-06-01 02:22:50

标签: python pandas nan

我正在根据下面的youtube链接进行财务研究,我想了解为什么我得到了NaN回报而不是预期的计算结果。我需要在此脚本中做什么才能达到期望值?

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

返回:

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

1 个答案:

答案 0 :(得分:1)

您需要将“ from_date”更改为具有一年以上的数据。

您当前的脚本返回一行,而一行数据上的.pct_change()返回NaN,因为没有上一行要与之进行比较。

当我从_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