前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】研究黑色星期五超市交易额影响因素【绘图展示】

【Python】研究黑色星期五超市交易额影响因素【绘图展示】

作者头像
阿黎逸阳
发布2021-03-10 11:18:55
6950
发布2021-03-10 11:18:55
举报
文章被收录于专栏:阿黎逸阳的代码

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

本文目录

  1. 导入数据
  2. 影响交易额因素分析 2.1 年龄因素对交易额影响 2.2 居住时长因素对交易额影响 2.3 年龄和居住时长因素对交易额影响 2.4 所有因素两两相关性分析

一、导入数据

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

代码语言:javascript
复制
import os              #导入库
import pandas as pd    #导入库

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

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

展示前几行数据如下:

二、影响交易额因素分析

1 年龄因素对交易额影响

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

代码语言:javascript
复制
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 居住时长因素对交易额影响

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

代码语言:javascript
复制
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 年龄和居住时长因素对交易额影响

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

代码语言:javascript
复制
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函数只对数值形数据计算相关系数,所以要先把字符形数据转成数值形,具体语句如下:

代码语言:javascript
复制
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相关性相对较高。

为了更清晰地展现相关性表,可以把这个表绘制成热力图,具体代码如下:

代码语言:javascript
复制
import seaborn as sns    #导入库

sns.heatmap(date.corr())  #根据相关系数表绘制热力图
plt.show()

得到结果如下:

图五 两两相关性表热力图

由图五知,年龄和较多因素的关联性都较高,产品类别1、产品类别2、产品类别3相关性相对较高。

更进一步,可以绘制分层聚类热力图,具体代码如下:

代码语言:javascript
复制
sns.clustermap(date.corr())  #绘制分层热力图
plt.show()

得到结果:

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

由图六知,产品类别1和产品类别2相关性较高首先聚为一类,再和产品类别3聚为一类。年龄和婚姻状态相关性较高首先聚为一类。

至此,在Python中绘图研究黑五超市交易额影响因素已全部讲解完毕,感兴趣的同学可以自己实现一遍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档