如何在DataFrame列内生成产品ID间基于平均需求的相关矩阵?
生成产品ID间需求相关矩阵的步骤
1. 明确数据前提
你当前的DataFrame仅包含每个产品的单一平均需求值,无法直接计算相关系数——相关系数需要每个产品具备至少两个观测值(比如不同时间点的需求数据),才能衡量变量间的线性关联程度。因此首先要确认你是否持有原始的多观测点需求数据(例如按时间维度记录的各产品需求)。
2. 转换数据格式(长格式→宽格式)
假设你有如下原始需求数据(示例):
| product_id | date | demand |
|---|---|---|
| 655 | 2023-01-01 | 8 |
| 132 | 2023-01-01 | 7 |
| 655 | 2023-01-02 | 7 |
| 132 | 2023-01-02 | 8 |
使用pandas将其转换为宽格式(列对应产品ID,行对应观测维度如日期):
import pandas as pd # 假设原始数据存储在df_raw中 wide_df = df_raw.pivot(index='date', columns='product_id', values='demand')
3. 计算相关矩阵
通过pandas内置的corr()方法直接生成相关矩阵:
corr_matrix = wide_df.corr()
此时corr_matrix就是你需要的结果:行和列均为产品ID,对角线值为1(自身相关系数),其余位置为对应两个产品需求的相关系数。
4. 特殊情况说明
如果你的数据确实只有每个产品的单一平均需求,那么计算相关矩阵没有统计学意义——所有非对角线位置的相关系数都会是NaN,因为单个值无法支撑变量间线性关系的计算。这种情况下需要重新梳理数据来源。
内容的提问来源于stack exchange,提问作者Rutger
相关产品推荐
相关产品推荐

