首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - NaN返回(pandas - resample函数)

Python - NaN返回(pandas - resample函数)
EN

Stack Overflow用户
提问于 2020-06-01 10:22:50
回答 1查看 69关注 0票数 1

我正在做一个基于下面youtube链接的财务研究,我想知道为什么我得到的是NaN回报,而不是预期的计算结果。我需要在这个脚本中做些什么才能达到预期值?

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

代码语言:javascript
复制
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

返回:

代码语言:javascript
复制
Ativo
ABEV3   NaN
CEAB3   NaN
ENBR3   NaN
FLRY3   NaN
IRBR3   NaN
ITSA4   NaN
JHSF3   NaN
STBP3   NaN
dtype: float64
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 10:38:51

您需要更改'from_date‘才能拥有一年以上的数据。

当前脚本返回一行,而一行数据上的.pct_change()返回NaN,因为没有以前的行可供比较。

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

代码语言:javascript
复制
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

我得到以下输出:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62124829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档