python - 使用部分数据重新采样和逐年计算

标签 python pandas datetime

我想看看是否有一种编程方法可以在最后一个周期为部分时重新采样和计算年同比百分比变化计算。例如,假设我想逐年进行更改。

from pandas_datareader import data
goog = data.DataReader('GOOG', start='2014', end='12-12-2016',
                   data_source='yahoo')
goog = goog['Close']
goog.resample('m').sum().pct_change(12).tail(-12)

最后 4 个值如下所示:

Date
2016-09-30    0.251944
2016-10-31    0.134146
2016-11-30    0.094623
2016-12-31   -0.582236

pandas resample 对 12 月(到 12 日)的部分月份求和,并在计算百分比变化时将其计为完整月份。当这不是现实时,这会使它成为一个非常负的数字(因为我们将整个月与部分月进行比较)。我想知道我是否从根本上改变了错误的方式。任何建议将不胜感激。

最佳答案

我会使用滚动窗口来进行 YoY。

pct = goog.pct_change().add(1)

# rolling doesn't have a cumprod
# so I'm going to use logs
np.exp(np.log(pct).rolling('365D').sum()).sub(1).resample('M').last()

Date
2014-01-31    0.060955
2014-02-28    0.092110
2014-03-31    0.001737
2014-04-30   -0.052777
2014-05-31    0.006989
2014-06-30    0.034669
2014-07-31    0.028050
2014-08-31    0.028050
2014-09-30    0.038410
2014-10-31    0.005532
2014-11-30   -0.025493
2014-12-31   -0.053244
2015-01-31   -0.057501
2015-02-28   -0.083085
2015-03-31   -0.016109
2015-04-30    0.025889
2015-05-31   -0.044715
2015-06-30   -0.090231
2015-07-31    0.100507
2015-08-31    0.087560
2015-09-30    0.059591
2015-10-31    0.298756
2015-11-30    0.378077
2015-12-31    0.449568
2016-01-31    0.462888
2016-02-29    0.256465
2016-03-31    0.380584
2016-04-30    0.289705
2016-05-31    0.377779
2016-06-30    0.326268
2016-07-31    0.215305
2016-08-31    0.283143
2016-09-30    0.271557
2016-10-31    0.103727
2016-11-30   -0.011733
2016-12-31    0.064632
Freq: M, Name: Close, dtype: float64

关于python - 使用部分数据重新采样和逐年计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842534/

相关文章:

python - Replace() 没有找到日期,也没有转换为另一个字符串

Python根据已有数据填充缺失值

javascript - javascript 前几个季度

python - 尝试使用返回 self 的 __iter__ 方法模拟迭代时出现 RecursionError

python - Pandas 分组和减少 DataFrame

python - 如何解决ModuleNotFoundError : No module named 'srsly.msgpack.util' in PyInstaller?

php - 为什么 DateTime() 在 Laravel 中不起作用?

perl - 如何在 Perl 中将日期转换为纪元时间?

python - 如何从另一个Python脚本重复运行一个Python脚本?

python - Visual Python 工作非常缓慢