Python代码:计算不同商品类别之间的相关系数
Python代码:计算不同商品类别之间的相关系数
这段代码使用Python计算不同商品类别之间的相关系数,旨在帮助你分析不同品类之间的关联性。代码采用皮尔逊相关系数,并使用Pandas和Seaborn库进行数据处理和可视化。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 用来正常显示中文标签
data = pd.read_excel('合并1.xlsx')
data['销售日期'] = pd.to_datetime(data['销售日期'])
data = data.sort_values('销售日期')
selected_data = data.groupby('分类名称').apply(lambda x: x.sample(1)).reset_index(drop=True)
# 创建一个新的DataFrame来存储所选单品的销售数据
selected_sales_data = pd.DataFrame()
# 遍历每个分类名称
for category in selected_data['分类名称']:
# 获取该分类名称下随机选择的单品的销售数据
single_product_data = data[(data['分类名称'] == category) & (data['单品名称'] == selected_data.loc[selected_data['分类名称'] == category, '单品名称'].values[0])]
# 将该单品的销售数据添加到新的DataFrame中
selected_sales_data = pd.concat([selected_sales_data, single_product_data])
# 创建数据透视表并进行相关性分析
pivot_data = selected_sales_data.pivot_table(values='销量(千克)', index='销售日期', columns='单品名称', aggfunc='sum')
# top_products = data.groupby('单品名称')['销量(千克)'].sum().nlargest(10).index
#
# selected_data = data[data['单品名称'].isin(top_products)]
# # # 选择每个分类名称中的第一个单品
# selected_data = data.groupby('分类名称').first().reset_index()
#
# # 创建一个新的DataFrame来存储所选单品的销售数据
# selected_sales_data = pd.DataFrame()
#
# # 遍历每个分类名称
# for category in selected_data['分类名称']:
# # 选择该分类名称下的第一个单品的销售数据
# single_product_data = data[(data['分类名称'] == category) & (data['单品名称'] == selected_data.loc[selected_data['分类名称'] == category, '单品名称'].values[0])]
# # 将该单品的销售数据添加到新的DataFrame中
# selected_sales_data = pd.concat([selected_sales_data, single_product_data])
#
# pivot_data = selected_sales_data.pivot_table(values='销量(千克)', index='销售日期', columns=['分类名称', '单品名称'], aggfunc='sum')
# pivot_data = selected_data.pivot_table(values='销量(千克)', index='销售日期', columns=['分类名称', '单品名称'], aggfunc='sum')
# pivot_data = data.pivot_table(values='销量(千克)', index='销售日期', columns='分类名称', aggfunc='sum')
# pivot_data = data.pivot_table(values='销量(千克)', index='销售日期', columns=['分类名称', '单品名称'], aggfunc='sum')
correlation = pivot_data.corr()
print(correlation)
代码解释
- 导入库: 导入必要的库,包括 Pandas 用于数据处理、Seaborn 用于数据可视化、matplotlib 用于绘图。
- 读取数据: 从名为 '合并1.xlsx' 的 Excel 文件中读取数据,并将 '销售日期' 列转换为日期格式。
- 数据整理: 对数据按照 '销售日期' 进行排序,并使用
groupby函数对每个 '分类名称' 进行分组,并使用sample(1)随机选择一个单品。 - 创建新的DataFrame: 创建一个新的 DataFrame 来存储所选单品的销售数据。
- 遍历分类名称: 遍历每个分类名称,获取该分类下随机选择的单品,并将该单品的销售数据添加到新的 DataFrame 中。
- 创建数据透视表: 使用
pivot_table函数创建数据透视表,以 '销售日期' 为索引,'单品名称' 为列,并使用 '销量(千克)' 为值。 - 计算相关性: 使用
corr()方法计算数据透视表的相关性矩阵,该矩阵中的每个单元格表示对应品类之间的相关系数。
代码的用途
这段代码可以用于计算不同商品类别之间的相关系数,帮助你了解不同类别之间的关联性。例如,你可以通过观察相关性矩阵,判断哪些类别之间存在较强的正相关或负相关关系,从而制定更有效的营销策略。
注: 代码中的 '合并1.xlsx' 文件名和 '销量(千克)' 列名需要根据你的实际情况进行调整。
代码的改进建议
- 可以使用 Seaborn 库绘制相关性热图,以便更直观地展示不同类别之间的相关性。
- 可以根据实际情况选择其他相关系数计算方法,例如 Spearman 相关系数或 Kendall 相关系数。
- 可以将代码封装成一个函数,方便重复使用。
总结
这段代码使用 Python 计算不同商品类别之间的相关系数,可以帮助你分析不同类别之间的关联性,并为制定营销策略提供参考。
原文地址: https://www.cveoy.top/t/topic/nUvM 著作权归作者所有。请勿转载和采集!