如何用Pandas将多列月度水果价格转换为单列并计算价格相关性?
数据重塑与水果价格相关性计算
原始数据
给定的初始DataFrame如下:
Fruit Jan Feb Apple 2.00 2.50 Banana 1.00 1.25
目标数据格式
需要将数据转换为以下格式,把水果与月度合并为单列,同时保留价格列:
Fruit_Month Price Apple_Jan 2.00 Apple_Feb 2.50 Banana_Jan 1.00 Banana_Feb 1.25
数据重塑实现
使用Pandas可以快速完成数据格式转换,步骤如下:
- 导入Pandas并构造原始数据
import pandas as pd df = pd.DataFrame({ 'Fruit': ['Apple', 'Banana'], 'Jan': [2.00, 1.00], 'Feb': [2.50, 1.25] })
- 重塑数据结构
# 将Fruit设为索引,堆叠月度列 reshaped = df.set_index('Fruit').stack().reset_index() # 重命名列 reshaped.columns = ['Fruit', 'Month', 'Price'] # 合并Fruit和Month为Fruit_Month reshaped['Fruit_Month'] = reshaped['Fruit'] + '_' + reshaped['Month'] # 提取目标列得到最终结果 final_df = reshaped[['Fruit_Month', 'Price']]
执行后得到的final_df即为目标格式。
计算水果价格相关性
要计算不同水果间的价格相关性,需要先将数据转换为宽格式(月度为索引,水果为列),再计算相关性矩阵:
# 转换为宽格式:每行对应一个月度,每列对应一种水果 corr_df = df.set_index('Fruit').T # 计算相关性矩阵 corr_matrix = corr_df.corr()
本例中得到的相关性矩阵如下:
Apple Banana Apple 1.0 1.0 Banana 1.0 1.0
该方法完全适配更多水果的场景,只要原始数据保持「水果为行、月度为列」的结构,即可直接套用上述代码生成相关性矩阵,无需修改核心逻辑。
内容的提问来源于stack exchange,提问作者Primer4662
相关产品推荐
相关产品推荐

