如何基于日期索引生成两个DataFrame的销售数据相关矩阵?
解决方案
你之前用groupby('Date').corr()的逻辑有误:按日期分组后每个组仅包含一行数据,根本无法计算有意义的相关系数,所以结果不符合预期。
要生成两个产品销售数据的相关矩阵,只需在合并数据后,直接对两个销售列调用corr()方法即可,具体操作如下:
步骤1:合并数据(这部分你的代码是正确的)
import pandas as pd data1 = [['0', 100], ['1', 235], ['2', 164]] df1 = pd.DataFrame(data1, columns=['Date', 'Sales Product 1']) data2 = [['0', 300], ['1', 105], ['2', 200]] df2 = pd.DataFrame(data2, columns=['Date', 'Sales Product 2']) df_corr = pd.merge(df1, df2, on='Date')
步骤2:计算相关矩阵
提取两个销售数据列,直接调用corr()方法:
result = df_corr[['Sales Product 1', 'Sales Product 2']].corr()
执行后得到的result就是符合预期的相关矩阵:
Sales Product 1 Sales Product 2 Sales Product 1 1.000000 -0.970143 Sales Product 2 -0.970143 1.000000
这个矩阵的含义:
- 对角线是各产品自身的相关系数(恒为1)
- 非对角线是两个产品销售数据的皮尔逊相关系数,反映两者的线性关联程度
如果你的需求确实是要构建以Product1每个日期销售值为行、Product2每个日期销售值为列的矩阵(比如自定义两两值的关联计算),需要明确具体的计算逻辑,但通常这类场景下,上述的变量间相关矩阵才是合理需求。
内容的提问来源于stack exchange,提问作者Alejandra
相关产品推荐
相关产品推荐

