【matplotlib绘图】分析黑五超市交易额的影响因素

​为了研究黑色星期五时超市交易额的影响因素,可以采用我们之前学过的绘图函数进行分析,本文致力于让大家学会用绘图函数进行案例分析。

在这里插入图片描述

  

一、导入数据


首先导入绘图所需的数据。

import os              #导入库
import pandas as pd    #导入库
​
os.chdir(r'F:\公众号\10.黑色星期五购物数据')   #设置文件存放路径
date = pd.read_csv('BlackFriday.csv')          #读取数据

注:如需文中数据进行练习,可到公众号中回复“黑五购物数据”即可免费获取。
  
展示前几行数据如下:

  
在这里插入图片描述

  
  

二、影响交易额因素分析

1 年龄因素对交易额影响

首先分析年龄因素对交易额的影响,具体语句如下:

import matplotlib.pyplot as plt                          #导入库
​
plt.rcParams['font.sans-serif'] = ['SimHei']              #解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False               # 解决中文显示问题
​
result = date[['Purchase']].groupby(date['Age']).mean() #按年龄分组,统计交易额平均值
plt.scatter(result['Purchase'], result.index, c=result['Purchase'])  #以交易额为x轴和区分颜色,年龄为y轴绘制散点图
plt.colorbar()                                           #绘制颜色条
plt.xlabel('交易额')                                     #x轴标签
plt.ylabel('年龄段')                                     #y轴标签
plt.title('不同年龄段交易额趋势')                        #标题
plt.show()

得到结果如下:
  
在这里插入图片描述

图一 不同年龄段交易额

  

由图一知,相对而言年龄越大交易额均值越大,但是在46到50岁的时候出现了一个反常现象。

  
  

2 居住时长因素对交易额影响

  
接着分析顾客在超市所在地居住时长因素对交易额的影响,具体语句如下:

result = date[['Purchase']].groupby(date['Stay_In_Current_City_Years']).mean() #按年龄分组,统计交易额平均值
plt.scatter(result['Purchase'], result.index, c=result['Purchase'])  #以交易额为x轴和区分颜色,年龄为y轴绘制散点图
plt.colorbar()                                           #绘制颜色条
plt.xlabel('交易额')                                     #x轴标签
plt.ylabel('居住时长')                                   #y轴标签
plt.title('不同居住时长对交易额影响')                    #标题
plt.show()

得到结果如下:
  
在这里插入图片描述

图二 不同居住时长对交易额影响

  

由图二知,在超市所在地居住时间2年左右的顾客平均交易金额最大,两者之间的关系整体呈现u字形。

  
  

3 年龄和居住时长因素对交易额影响

  
再根据居住时长和年龄因素绘制三维散点图,分析这两个因素对交易额的影响,具体语句如下:

import matplotlib.cm as cm       #导入库
​
result = date[['Purchase']].groupby([date['Stay_In_Current_City_Years'], date['Age']]).mean() #按年龄分组,统计交易额平均值, resul
ax = plt.subplot(projection='3d')
ax.scatter(result['Purchase'], result.index.codes[0], result.index.codes[1], color=cm.ScalarMappable().to_rgba(result['Purchase']))  #绘制三维散点图
sm = plt.cm.ScalarMappable(norm=plt.Normalize(vmin=result['Purchase'].min(), vmax=result['Purchase'].max()))
plt.xlabel('交易额')                                     #x轴标签
plt.ylabel('居住年数')                                   #y轴标签
plt.title('不同居住时长和年龄段对交易额影响')            #标题
plt.colorbar(sm)                                         #显示对应数值的颜色条
plt.show()

得到结果如下:
  
在这里插入图片描述

图三 不同居住时长和年龄段对交易额影响

  

由图三知,整体而言年龄段越大,在超市所在地居住时间2年左右的顾客平均交易金额最大,但是看得不是很清晰。接下来从相关性角度对所有因素进行两两相关性分析。

  
  

4 所有因素两两相关性分析

  
由于corr函数只对数值形数据计算相关系数,所以要先把字符形数据转成数值形,具体语句如下:

pd.set_option('display.max_columns', None)       #设置最大显示列数
date['Age'] = date['Age'].apply(lambda x:x[0])   #取年龄段的第一数字替换年龄变量,方便相关性计算
date.loc[date['Stay_In_Current_City_Years']=='4+', 'Stay_In_Current_City_Years'] = 4  #把居住时长中的4+替换成4
date['Age'] = date['Age'].astype(int)            #把年龄字段字符形转成数值形(整形)
date['Stay_In_Current_City_Years'] = date['Stay_In_Current_City_Years'].astype(int)   #把居住时长字段字符形转成数值形(整形)
date.corr()                                      #计算数据表字段的两两相关性

得到结果如下:
  
在这里插入图片描述

图四 两两相关性分析

  

由图四知,对交易额影响最大的因素是产品类别1,产品类别1、产品类别2、产品类别3相关性相对较高。为了更清晰地展现相关性表,可以把这个表绘制成热力图,具体代码如下:

import seaborn as sns    #导入库
​
sns.heatmap(date.corr())  #根据相关系数表绘制热力图
plt.show()

得到结果如下:
  
在这里插入图片描述

图五 两两相关性表热力图

  

由图五知,年龄和较多因素的关联性都较高,产品类别1、产品类别2、产品类别3相关性相对较高。更进一步,可以绘制分层聚类热力图,具体代码如下:

sns.clustermap(date.corr())  #绘制分层热力图
plt.show()

得到结果:
  
在这里插入图片描述

图六 两两相关性分层聚类热力图

  
由图六知,产品类别1和产品类别2相关性较高首先聚为一类,再和产品类别3聚为一类。年龄和婚姻状态相关性较高首先聚为一类。至此,在Python中绘图研究黑五超市交易额影响因素已全部讲解完毕,感兴趣的同学可以自己实现一遍。

你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

猜你喜欢

转载自blog.csdn.net/qq_32532663/article/details/113923650