簡體   English   中英

當存在 NaN 時,Pandas 滾動相關總是返回 NaN。 與 DataFrame.corr 的行為不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM