Python数据分析实战:使用NumPy与Matplotlib进行销售数据相关性分析

82 阅读3分钟

掌握如何使用Python科学计算库分析商品销售数据,揭示不同品类间的关联关系

在商业数据分析中,理解不同商品品类销售表现之间的关联性对于制定营销策略和库存管理至关重要。本文将展示如何使用Python中的NumPy和Matplotlib库,通过计算协方差和相关系数来分析商场销售数据。

完整代码实现

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 读取水果和化妆品、蔬菜、海鲜
(fruitSales, vegetableSales, seafoodSales, makeupSales) = np.loadtxt("mall_sales.csv",
                                      delimiter=",",
                                      skiprows=1,
                                      usecols=(1,2,3,4),
                                      encoding="gbk",
                                      unpack=True)
# 计算协方差
# 归一化
fruit_sales_r = np.diff(fruitSales)/fruitSales[:-1]
makeup_sales_r = np.diff(makeupSales)/makeupSales[:-1]
vegetable_sales_r = np.diff(vegetableSales)/vegetableSales[:-1]
seafood_sales_r = np.diff(seafoodSales)/seafoodSales[:-1]
covm = np.cov(fruit_sales_r, makeup_sales_r)
print("协方差矩阵是:\n", covm)
covmDiag = covm.diagonal()
print("\n协方差矩阵的对角线元素是:\n", covmDiag)
convTrc = covm.trace()
print("\n协方差矩阵的迹是:\n", convTrc)
# r = covm / (fruit_sales_r.std() * makeup_sales_r.std())   # 第一种方式
r1 = np.corrcoef(fruit_sales_r, makeup_sales_r)   # 第二种方式
print("\n相关系数矩阵是:\n", r1)
# 可视化
t = np.arange(len(fruit_sales_r))
plt.plot(t, fruit_sales_r, 'r-', label='fruit')
plt.plot(t, makeup_sales_r, 'g--', label='makeup')
plt.plot(t, vegetable_sales_r, 'b*', label='vegetable')
plt.plot(t, seafood_sales_r, 'r-*', label='seafood')
plt.legend()
plt.show()
# 相关系数矩阵
# 水果、蔬菜
r2 = np.corrcoef(fruit_sales_r, makeup_sales_r)
print("\n水果、蔬菜相关系数矩阵是:\n", r2)
# 水果、海鲜
r3 = np.corrcoef(fruit_sales_r, makeup_sales_r)
print("\n水果、海鲜相关系数矩阵是:\n", r3)
# 化妆品、蔬菜
r4 = np.corrcoef(fruit_sales_r, makeup_sales_r)
print("\n化妆品、蔬菜相关系数矩阵是:\n", r4)
# 化妆品、海鲜
r5 = np.corrcoef(fruit_sales_r, makeup_sales_r)
print("\n化妆品、海鲜相关系数矩阵是:\n", r5)
# 蔬菜、海鲜
r6 = np.corrcoef(fruit_sales_r, makeup_sales_r)
print("\n蔬菜、海鲜相关系数矩阵是:\n", r6)

代码解析与输出结果

数据读取与预处理

代码首先使用np.loadtxt()函数从CSV文件中读取四个商品品类的销售数据。通过计算销售增长率(环比增长率)来消除绝对数值的影响,使得不同量级的销售数据能够进行有意义的比较。

协方差分析

协方差矩阵反映了两个变量之间的线性相关程度:

· 对角线元素:表示各变量自身的方差 · 非对角线元素:表示两个变量之间的协方差 · 迹:协方差矩阵对角线元素之和,反映总体变异程度

相关系数分析

相关系数矩阵标准化了协方差,其值域在-1到1之间:

· 接近1:强正相关 · 接近-1:强负相关 · 接近0:无线性相关

数据可视化

通过Matplotlib绘制各品类销售增长率的趋势图,使用不同颜色和线型区分各个品类,直观展示销售变化的同步性或差异性。

总结

· NumPy数组操作:高效处理数值计算和矩阵运算 · 统计分析函数:np.cov()和np.corrcoef()简化了相关性分析 · 数据可视化:Matplotlib提供灵活的图表绘制功能 · 数据预处理:增长率计算消除了基数影响,使比较更有意义