尝试获取滚动相关性时的NAN值

2024-05-19 19:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到2个值的滚动相关性,我不断得到NAN值。我知道NAN值与窗口大小相关,但我感到困惑。我怎么知道窗户的尺寸应该放什么?我已经看了一些以前在这个论坛上关于这个问题的帖子,但我感到困惑

数据集名称为ok,下面是我插入的代码ok[matic].rolling(50).corr(ok[bi])

这就是我尝试过的代码maticbi是我想要运行关联的两个变量;总共有49行和两列。我每行都有日期。但是我不断得到NAN值,并且我尝试在窗口大小中插入数字50、49和48。我还从bi变量中删除了一个值,使其比matic值小一个,但我仍然收到所有NAN值。我想要一张图表和一张图表,列出每一种相关性

    matic   bitcoin
Date        
2021-04-01  NaN NaN
2021-04-02  NaN NaN
2021-04-03  NaN NaN
2021-04-04  NaN NaN
2021-04-05  NaN NaN
2021-04-06  NaN NaN
2021-04-07  NaN NaN
2021-04-08  NaN NaN
2021-04-09  NaN NaN
2021-04-10  NaN NaN
2021-04-11  NaN NaN
2021-04-12  NaN NaN
2021-04-13  NaN NaN
2021-04-14  NaN NaN

Tags: 数据代码名称尺寸图表oknan论坛
1条回答
网友
1楼 · 发布于 2024-05-19 19:18:21

您获得所有NAs的原因是您使用的窗口太大

下面是一个可重复的小示例:

import pandas as pd
import numpy as np

nobs = 49

ok = pd.DataFrame({'matic':np.random.rand(nobs),
                   'bi':np.random.rand(nobs)})

print(ok['matic'].rolling(window=50).corr(ok['bi']))

由于您的数据只有49个观测值,因此不可能用50大小的窗口计算滚动平均值

相反,您可以这样做:

print(ok['matic'].rolling(window=3).corr(ok['bi']))

计算窗口大小为3的滚动平均值(即,三个连续项之间的相关项)

最后,您也可以这样做:

print(ok['matic'].corr(ok['bi']))

这将只计算整个数据集中的一个相关性

相关问题 更多 >