ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Python】研究黑色星期五超市交易额影响因素【绘图展示】

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

原创 数据库开发技术 作者:阿黎逸阳的代码 时间:2021-02-06 07:00:00 0 删除 编辑
为了研究黑色星期五时超市交易额的影响因素,可以采用我们之前学过的绘图函数进行分析,本文致力于让大家学会用绘图函数进行案例分析。


本文目录
  1. 导入数据

  2. 影响交易额因素分析

    2.1  年龄因素对交易额影响

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

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

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


一、导入数据
首先导入绘图所需的数据。
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() #按年龄分组,统计交易额平均值, resulax = 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+替换成4date['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中绘图研究黑五超市交易额影响因素已全部讲解完毕,感兴趣的同学可以自己实现一遍。

往期回顾:
520表白代码合集
黑客帝国中的代码雨
用python绘制皮卡丘
娱乐圈排行榜动态条形图绘制
Python人脸识别—我的眼里只有你
3D星空图V2版——添加背景图片和音乐


扫一扫关注我

19967879837

投稿微信号、手机号


原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。

下一篇: Python绘制三维图
请登录后发表评论 登录
全部评论

注册时间:2020-02-15

  • 博文量
    282
  • 访问量
    130883