ValueError: object too deep for desired array while using cross correlation
ValueError: object too deep for desired array while using cross correlation
我正在尝试调查两个 DataFrame 的互相关。代码在这里:
df1 = pd.DataFrame({"A":[1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]})
df2 = pd.DataFrame({"A":[7191, 7275, 9889, 9934, 9633, 9924, 9650, 9341, 8820, 8784, 8869]})
np.correlate(df1, df2)
但是我得到这个错误:
有什么想法吗?
您在作为 2D 数据框传递时遇到此错误。 np.correlate
用于两个一维序列的互相关。所以试试。
np.correlate(df1.squeeze(), df2.squeeze())
输出 array([80556], dtype=int64)
.
编辑
根据您的建议,试试
# You will need to change your column names, like
df1 = pd.DataFrame({"A":[1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]})
df2 = pd.DataFrame({"B":[7191, 7275, 9889, 9934, 9633, 9924, 9650, 9341, 8820, 8784, 8869]})
df1.join(df2).corr()
输出
A B
A 1.000000 -0.174287
B -0.174287 1.000000
正如 piRSquared 在评论中所建议的,您还可以使用 df1.corrwith(df2)
到 return 单个值。
另一种选择是使用 scipy.stats
函数 pearsonr
。所以导入后:
pearson = pearsonr(df1['A'].values,df2['A'].values)
我正在尝试调查两个 DataFrame 的互相关。代码在这里:
df1 = pd.DataFrame({"A":[1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]})
df2 = pd.DataFrame({"A":[7191, 7275, 9889, 9934, 9633, 9924, 9650, 9341, 8820, 8784, 8869]})
np.correlate(df1, df2)
但是我得到这个错误:
有什么想法吗?
您在作为 2D 数据框传递时遇到此错误。 np.correlate
用于两个一维序列的互相关。所以试试。
np.correlate(df1.squeeze(), df2.squeeze())
输出 array([80556], dtype=int64)
.
编辑
根据您的建议,试试
# You will need to change your column names, like
df1 = pd.DataFrame({"A":[1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]})
df2 = pd.DataFrame({"B":[7191, 7275, 9889, 9934, 9633, 9924, 9650, 9341, 8820, 8784, 8869]})
df1.join(df2).corr()
输出
A B
A 1.000000 -0.174287
B -0.174287 1.000000
正如 piRSquared 在评论中所建议的,您还可以使用 df1.corrwith(df2)
到 return 单个值。
另一种选择是使用 scipy.stats
函数 pearsonr
。所以导入后:
pearson = pearsonr(df1['A'].values,df2['A'].values)