python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示
数据源:Kaggle网站上一个“blackFriday.csv”文件(Kaggle网站是一个流行的数据科学竞赛平台),下载下来的数据字段如下:
2020-10-19 13:13:29 上传
下载附件 (195.69 KB)
本节通过该数据,练习使用数据的三维图形化、字段之间的相关性及相关性热力图,直观地查看出哪些因素影响购买力,其三维散点图是怎样的。
一、怎样查看哪些因素影响购买力?
方法1:逐一探索各字段对购买力的影响趋势
数据量较小时,可以逐一查看每个字段与购买额字段的相关系数。相关系数较大的,影响力就大。
而本文件数据量较大(53万条),不便直接展示各字段与购买额之间的散点图,所以可将研究字段比如年龄,可以按年龄段分组后取均值,然后再研究。
但该方法需要研究的字段较多,逐一探索的方法效率较低。因此考虑使用方法2。
方法2:使用Dataframe的corr()函数查看各字段之间的相关性
该方法可以更快地分析出各字段之间的相关性,自然也可以看出每个字段与购买额字段的相关系数,从而更快捷、更方便地观察出最具影响力的属性。
二、图形化展示某因素对购买力的影响
根据方法2,逐步在python中实现,步骤如下:
Step1、看各因素之间的相关性
使用pd.read_csv()读入数据,生成DataFrame类型的变量。
使用dataframe.corr(),查看各字段之间的相关性。
【脚本及结果】
2020-10-19 13:13:30 上传
下载附件 (109.09 KB)
我们发现,没有年龄、城市类别和居住时长与其他字段之间的关联,原因是,这三个字段的值不是数值类型的。
将其转换为数值类型后,重新查看各字段之间的相关性。
【脚本】importpandasaspddata=pd.read_csv(r'D:\cpda\python\data\BlackFriday.csv')pd.set_option('display.max_columns',None)#将年龄、居住时长调整为数值型data['Age']=data['Age'].apply(lambdax:x[0])#表示输入一个字符串x,输出x[0] , 在此不能直接使用int()函数,因为系统认为apply(lambda x: x[0])是一个序列data.loc[data['Stay_In_Current_City_Years']=='4+','Stay_In_Current_City_Years']=4#将该列异常数据用正常数据代替data['Age']=data['Age'].astype(int)#数据类型转换data['Stay_In_Current_City_Years']=data['Stay_In_Current_City_Years'].astype(int)corr1=data.corr()print(corr1)【结果】
2020-10-19 13:13:30 上传
下载附件 (71.97 KB)
相关性矩阵
显然,这里数据量较大,不太容易一眼看出哪些字段相关性较强,所以我们需要可视化。
Step2、将相关性图形化
Seaborn是基于matplotlib的图形可视化python包,它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。Seaborn要求原始数据的输入类型为 pandas 的 Dataframe或 Numpy 数组。这里我们使用他的heatmap()和clustermap()两个函数,可以展现相关性热力图,以及聚类情况。【脚本】sbn.heatmap(corr1)sbn.clustermap(corr1)plt.show()【结果】
2020-10-19 13:13:30 上传
下载附件 (42.27 KB)heatmap()的结果
由heatmap()与相关性矩阵来看,与销售额相关性较强的属性并不多,甚至产品类别1和产品类别2还与购买力成负相关。年龄好像与购买力有相关性,但比较弱。
此外,我们从图中还可以看出,年龄与婚否有相关性,这与我们的正常认知一致。几个产品类别之间也有较强的相关性。当然这些不在我们本次研究范围内。
我们再看clustermap()的结果:
2020-10-19 13:13:30 上传
下载附件 (39.21 KB)
clustermap()的结果
对比heatmap()图和clustermap()图,发现后者将系数相近的类别聚在了一些,全图深色浅色各聚一簇,以便我们做聚类分析。
Step3、看单一因素的影响力
因为我们研究的目标是“什么样的用户购买的更多”,所以尽管产品类别与销售额有明显地负相关性,却因不是研究主体“人”的属性,所以在此不做仔细观察。我们着重看人的年龄、职业、居住时长及婚否这些属性,可以详细查看相应的散点图。如:
因数据量较大,散点图太多,可以将年龄等字段分组后取均值,以看整体效果。
【脚本】
# 将年龄、居住时长调整为数值型
data['Age'] = data['Age'].apply(lambda x: x[0])
# 表示输入一个字符串x,输出x[0] , 在此不能直接使用int()函数,因为系统认为apply(lambda x: x[0])是一个序列
data.loc[data['Stay_In_Current_City_Years'] == '4+', 'Stay_In_Current_City_Years'] = 4 # 将该列异常数据用正常数据代替
data['Age'] = data['Age'].astype(int) # 数据类型转换
data['Stay_In_Current_City_Years'] = data['Stay_In_Current_City_Years'].astype(int)
y = data[['Purchase']].groupby(data['Age']).mean()
z = data[['Purchase']].groupby(data['Stay_In_Current_City_Years']).mean()
# 可视化相关性,二维
plt.scatter(y['Purchase'], y.index, c=y['Purchase']/10, s=y['Purchase']/10)
plt.show()
plt.scatter(z['Purchase'], z.index, c=z['Purchase']/10, s=z['Purchase']/10)
plt.show()
【结果】
2020-10-19 13:13:31 上传
下载附件 (15.53 KB)
年龄与购买额相关性
2020-10-19 13:16:29 上传
下载附件 (18.72 KB)
居住时长与购买额相关性
从上图可以看出,年龄、及居住时长都会对购买力产生影响。
此外,我们还可以查看这些因素的三维散点图。方法如下:
【脚本】
from mpl_toolkits.mplot3d import axes3d
result = data.groupby([data['Stay_In_Current_City_Years'], data['Age']]).mean()
# ax =plt.subplot(projection='3d')
fig = plt.figure('3D scatter')
ax3d = axes3d.Axes3D(fig)
ax3d.scatter(result['Purchase'], result.index.codes[0], result.index.codes[1],
color=cm.ScalarMappable().to_rgba(result['Purchase']), s=200)
plt.show()
【结果】
2020-10-19 13:13:31 上传
下载附件 (124.2 KB)
【看图分析】
上图中,X轴为购买额,Y轴为居住时长,Z轴为年龄段,我们可以看到:随着年龄段和居住时间的增加,购物额也在不断增加。
【特别说明】
针对3d可视化脚本,老师讲使用以下脚本即可:
ax =plt.subplot(projection='3d')
ax.scatter(result['Purchase'], result.index.codes[0], result.index.codes[1],
color=cm.ScalarMappable().to_rgba(result['Purchase']), s=200)
但实际在我机器上使用时,却报“Unknown projection '3d'”的错误,百度一下,发现“matplotlib版本和python版本的更新问题”,所以使用了以上解决方案。见https://blog.csdn.net/weixin_40051325/article/details/102896416
三、总结
对我个人来说,本节学到的内容有:
1、 数据相关性的分析方法,使用dataframe.corr()
2、 相关性的图形化展示,使用Seaborn库下的heatmap()和clustermap()两个函数
3、 3d图形展示时,如果不能直接使用plt.subplot(projection='3d'),则引入axes3d( 3D图形绘制)。
python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示相关推荐
- Flink_大数据技术之电商用户行为分析
大数据技术之电商用户行为分析 第1章 项目整体介绍 1.1 电商的用户行为 电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用大数据技术进行深入挖掘和分析 ...
- Spark项目实战—电商用户行为分析
文章目录 一.[SparkCore篇]项目实战-电商用户行为分析 前言:数据准备 1.数据规则如下: 2.详细字段说明: 3.样例类 (一)需求1:TOP10热门品类 1.需求说明 2.代码实现方案1 ...
- 电商用户行为分析大数据平台相关系列1-环境介绍
最近在自学Spark,看了一些书籍和视频,总是感觉无从下手.拿着一个想法总是无从下手.追其原因,主要是没有系统的学习和使用.对于IT,一切新技术都需要不断实践.不断动手.本着动手的原则,本人通过各种渠 ...
- 数据分析实战(六):英国电商用户行为分析
案例:英国电商用户行为数据分析 Part 1. 数据获取 1.1 数据集简介 https://archive.ics.uci.edu/ml/datasets/online+retail# 该数据集为英 ...
- 某电商用户行为分析-提升GMV
目录 1. 明确项目背景和需求 项目目的: 分析思路: 2 数据探索(EDA) 2.1 数据集信息 2.2数据预览 2.2.1 new_user 2.2.2 age 2.2.3 sex 2.2.4 m ...
- 电商用户行为分析大数据平台
简介 对电商用户行为: 访问行为 购物行为 广告点击 进行复杂的分析 结果 辅助PM 数据分析师 管理分析现有状况 改进产品设计 调整公司战略业务 提升业绩 营业额以及市场占有率提升 技术简介 业务模 ...
- 【Flink】基于 Flink 的电商用户行为分析(二)
1.市场营销商业指标统计分析 模块创建和数据准备 继续在 UserBehaviorAnalysis 下新建一个 maven module 作为子项目,命名为 MarketAnalysis. 这个模块中 ...
- Python 数据分析实战之电商用户行为分析(万字干货)
作者:freedom_lime https://juejin.im/post/6844904202590748679#heading-0 1 项目背景 项目对京东电商运营数据集进行指标分析以了解用户购 ...
- 毕业设计 大数据电商用户行为分析 -python 大数据
文章目录 0 前言 一.背景描述 二.项目背景 三.数据来源 四.提出问题 五.理解数据 六.数据清洗 6.1缺失值处理 6.2查看数据 6.3一致化处理 6.4查看data_user数据集数据类型: ...
最新文章
- 方法传递java_Java 程序将方法作为参数传递给其他方法
- 编写你的第一个 Django 应用,第 4 部分
- ASP.NET WEBAPI设计(文摘)
- Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏
- python路径规划算法可视化_路径规划问题:DIJKSTRA算法 以及Python实现
- linux centos 7.0 安装配置,CentOS7.0安装配置CouchBase
- erl_nif中解决调用enif_get_XX错误问题
- 单片机 自动更改日期_自动螺丝机不可或缺之功能
- viper12a电源电路图_viper12a引脚功能图与引脚电压
- oeasy教您玩转linux-010110内容回顾
- php自动关机代码,win7定时关机命令是什么
- 你会在本地搭建 Web 版 VS Code 吗,看完这一篇你就能轻松实现了!
- 《地球概论》(第3版)笔记 第三章 地球的运动
- 对 算术基本定理 的研究
- postman Error: connect ECONNREFUSED xxx
- Two Teams Composing
- PHP扩展undefined symbol,基于phpx的扩展运行报错undefined symbol
- Markdown 语法学习
- 【香蕉OI】GCD 和 LCM (莫比乌斯反演)
- Python安装第三方库方法教程
热门文章
- 【Elasticsearch】Elasticsearch 索引生命周期管理
- 【Java】Java 集合相关的博客积累
- Docker : Docker 查看容器 IP 地址以及相关信息
- 【Flink】Flink RecordWriterOutput pushToRecordWriter InterruptedException
- Spring : Spring 深入理解lombok
- java自动转换需要的开头_字符串和数值型进行运算时,字符串如果不是数字开头,会自动转换成什么?...
- ORA-00257 archiver error. 错误的处理方法
- matlab arctan 反函数,arctanx的导数是什么 反函数求导公式
- [转]我的数据结构不可能这么可爱!——珂朵莉树(ODT)详解
- VB.Command()的参数