![](/img/trans.png)
[英]DataFrame.corr() - Pearson linear correlation calculated with the same duplicated data?
[英]Pandas rolling correlation always returns NaN when there is a NaN. Not the same behavior as DataFrame.corr
下面的代碼將只輸出 Nan 值
df = pd.DataFrame({'B': [0, 1, 3, np.nan, 4,5,6],'A': [0, 1, 2,3, 4,5,6]})
df["corr"] = df['A'].rolling(4).corr(df['B'],min_periods=1)
print(df["corr"] )
似乎 min_periods 選項不起作用。 我希望我有與以下相同的行為:
df = pd.DataFrame({'B': [0, 1, 3, np.nan],'A': [0, 1, 2, 3]})
print(df.corr() )
即使使用 NaN 值,這也會打印出正確的相關性。 我不能只過濾掉 NaN 行,因為我正在使用時間序列對象,這會給我提供不同時間段的窗口。
使用最新的熊貓版本 (1.4.3)
您可以通過rolling
檢查min_periods
df['cor'] = df['A'].rolling(4,min_periods=1).corr(df['B'])
Out[305]:
0 NaN
1 1.00000000
2 0.98198051
3 0.98198051
4 0.92857143
5 0.98198051
6 1.00000000
dtype: float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.