我有一个金融工具的每日收盘价时间序列,可以追溯到1990年
我试图将前几年每个交易日的每日百分比变化与2019年的相应交易日进行比较。目前我有41个交易日的2019年数据
我已经过滤并创建了一个新的数据框架,其中只包含前41个日期、收盘价、每日百分比变化以及集合中每一天的“交易日”(“tdoy”)分类器,但我没有从中得到好运
我还发现了其他堆栈溢出问题,可以帮助人们比较datetime
天、周、年等。但我无法重新创建这些问题,因为每个“tdoy”代表的值都是任意的
由于行数太多,我不想创建一个示例数据帧,所以我将我得到的CSV链接到了这里:Sample CSV
我认为最简单的方法就是创建一个新的列,使用df.loc
返回每个对应的“tdoy”(一年中的交易日)的2019年百分比变化,如果我能弄清楚这一点,我就可以再创建一个专栏,把那一年/那一天的百分比变化和2019年的相应值做简单的区别。下面是我尝试使用的(我也尝试过其他变体)没有用的。
df['2019'] = df['perc'].loc[((df.year == 2019) & (df.tdoy == df.tdoy))]
我试着搜索Stack和Google大概有20种不同的版本,但似乎找不到一个适合我的任意“交易日”分类问题的答案
我确信答案就在我面前,但我对数据争论还是很陌生
第一步是正确导入csv。我不确定您是否进行了调整,但您的数据的日期列是一个字符串对象
将时差和年份放入多重指数中
生成数据透视表
创建计算列
完全没有注释和数据,代码如下所示:
[编辑]海报要求与2019年相比的所有日期
忽略上面的年份筛选器,创建透视表
创建一个遍历年份/列的循环,并为与2019年相比的每一年创建一个新字段
要查看某些数据
所有年份的最终代码:
我也提出了我自己的答案,更符合我最初想要实现的目标。我将使用DataFrame作为示例
df
:Dates last perc year tdoy 0 2016-01-04 29.93 -0.020295 2016 2 1 2016-01-05 29.63 -0.010023 2016 3 2 2016-01-06 29.59 -0.001350 2016 4 3 2016-01-07 29.44 -0.005069 2016 5 4 2017-01-03 34.57 0.004358 2017 2 5 2017-01-04 34.98 0.011860 2017 3 6 2017-01-05 35.00 0.000572 2017 4 7 2017-01-06 34.77 -0.006571 2017 5 8 2018-01-02 33.38 0.009069 2018 2 9 2018-01-03 33.76 0.011384 2018 3 10 2018-01-04 33.74 -0.000592 2018 4 11 2018-01-05 33.65 -0.002667 2018 5 12 2019-01-02 27.90 0.012704 2019 2 13 2019-01-03 28.18 0.010036 2019 3 14 2019-01-04 28.41 0.008162 2019 4 15 2019-01-07 28.26 -0.005280 2019 5
我创建了一个数据帧,其中只有
tdoy
和perc
的2019个值df19 = df[['tdoy','perc']].loc[df['year'] == 2019]
然后把这些值压缩成字典
perc19 = dict(zip(df19.tdoy,df19.perc))
以…结束
perc19= {2: 0.012704174228675058, 3: 0.010035842293906852, 4: 0.008161816891412365, 5: -0.005279831045406497}
然后将这些键与原始数据帧中的
tdoy
列映射,以创建一个名为2019
的列,该列具有该交易日相应的2019年百分比变化值df['2019'] = df['tdoy'].map(perc19)
然后创建一个
vs2019
列,在这里我找到2019
和perc
的差异,并将其平方Dates last perc year tdoy 2019 vs2019 0 2016-01-04 29.93 -0.020295 2016 2 0.012704 6.746876 1 2016-01-05 29.63 -0.010023 2016 3 0.010036 3.995038 2 2016-01-06 29.59 -0.001350 2016 4 0.008162 1.358162 3 2016-01-07 29.44 -0.005069 2016 5 -0.005280 0.001590 4 2017-01-03 34.57 0.004358 2017 2 0.012704 0.431608 5 2017-01-04 34.98 0.011860 2017 3 0.010036 0.033038 6 2017-01-05 35.00 0.000572 2017 4 0.008162 0.864802 7 2017-01-06 34.77 -0.006571 2017 5 -0.005280 0.059843 8 2018-01-02 33.38 0.009069 2018 2 0.012704 0.081880 9 2018-01-03 33.76 0.011384 2018 3 0.010036 0.018047 10 2018-01-04 33.74 -0.000592 2018 4 0.008162 1.150436
在这里,我可以通过各种方式进行分组,并进一步计算与我比较的年份(2019年)相比,最相似的趋势百分比变化
相关问题 更多 >
编程相关推荐