Kaggle基于黑色星期五交易数据的用户画像分析---PYTHON
这里写自定义目录标题
- Kaggle基于黑色星期五交易数据的用户画像分析---PYTHON
- 1 前言
- 2 研究目的
- 3 数据说明与处理
- 3.1数据来源和说明
- 3.2数据预处理
- 3.2.1查看数据详情
- 3.2.2修改列名
- 3.2.3缺失值处理
- 4 数据分析
- 4.1 性别
- 4.2 婚姻状况
- 4.3 年龄
- 4.4 城市
- 4.5 居住城市年数
- 4.6 职业
- 5 结论
Kaggle基于黑色星期五交易数据的用户画像分析—PYTHON
1 前言
黑色星期五可以简单理解为国外的双十一,是指十一月第四个星期五,各大商场都会推出大量的打折和优惠活动的日子。
2 研究目的
数据分析不是为了分析而分析,而是要通过数据分析来达到某种目的。对黑色星期五销售数据进行分析,是希望通过数据分析来更好地了解客户购买行为。
针对数据提供的信息,主要从这几个方面去分析:
3 数据说明与处理
3.1数据来源和说明
数据来源于kaggle---------< Black Friday > https://www.kaggle.com/mehdidag/black-frida 。
黑色星期五可以简单理解为国外的双十一,是指十一月第四个星期五,各大商场都会推出大量的打折和优惠活动的日子。
数据是关于零售商店中黑色星期五的53万条零售商店中进行的交易数据,共包含12个字段。
序号 | 字段名 | 数据类型 | 字段描述 | 备注 |
---|---|---|---|---|
1 | User_ID | String | 用户ID | |
1 | Product_ID | String | 商品ID | |
3 | Gender | String | 性别 | F:女,M:男 |
4 | Age | String | 年龄 | 7个年龄段 |
5 | Occupation | String | 职业 | 用0-20表示 |
6 | City_Category | String | 城市类别 | A,B,C |
7 | Stay_In_Current_City_Years | Integer | 居住城市年数 | 0,1, 2, 3, 4+ |
8 | Marital_Status | Integer | 婚姻状况 | 0:已婚,1:未婚 |
9 | Product_Category_1 | Integer | 产品类别1 |
3.2数据预处理
3.2.1查看数据详情
df = pd.read_csv(r'E:\DATA\BlackFriday.csv')
df.shape
df.info()
print(df.describe())
print(df.head(10))
3.2.2修改列名
为了方便看,可以先对列名进行重命名成中文。
df = df.rename(columns={'User_ID': '用户ID', 'Product_ID': '商品ID', 'Gender': '性别', 'Age': '年龄', 'Occupation': '行业', 'City_Category': '城市类别', 'Stay_In_Current_City_Years': '居住城市年数', 'Marital_Status': '婚姻状况', 'Product_Category_1': '产品类别1', 'Product_Category_2': '产品类别2', 'Product_Category_3': '产品类别3', 'Purchase': '采购额'})
3.2.3缺失值处理
(df.shape[0]- df.dropna(how='any').shape[0])/df.shape[0]
产品类别2和产品类别3是有缺失数据的,缺失是比例占69%,数据量太大,不能删除,而且产品类别不好填充。但是因为在分析的过程中这两个字段不进行分析,所以这里不管缺失值。
df_dd = df.drop_duplicates(subset=['用户ID'])[['用户ID', '性别', '年龄', '职业', '城市类别', '居住城市年数', '婚姻状况']].sort_values(by='用户ID')
df_dd['采购额'] = df.groupby('用户ID')['采购额'].sum().sort_index().values
4 数据分析
4.1 性别
explode = (0.1,0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd['性别'].value_counts(), explode=explode,labels=['男','女'], autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_d", 2))ax1.axis('equal')
plt.tight_layout()
plt.legend()
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')plt.legend(fontsize='16')
plt.show()
s_gender = df_dd.groupby('性别')['采购额'].sum().sort_values()plt.figure(figsize=(12, 6))
plt.subplot(1, 1, 1)
sc = sns.color_palette("Blues_d", 2)
sns.barplot(s_gender.index, s_gender.values, palette=sc)
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.xticks(np.arange(2), ('女', '男'))plt.title('', fontsize=18)
plt.show()
从消费人数与消费金额两个维度来看,男性都远远超过女性,这个结论与国内男性、女性的消费存在很大的差异,有点出乎意料。
4.2 婚姻状况
explode = (0.1, 0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd['婚姻状况'].value_counts(), explode=explode, labels=['已婚','未婚'], autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_d", 2))ax1.axis('equal')
plt.tight_layout()
plt.legend(fontsize=18)
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')plt.legend(fontsize='16')
plt.show()
从图中看,购买人群中已婚的要多于未婚的,结婚的生活需要购买的需要多一点,可能家庭消费比较多。在进行营销的时候,要偏向于已婚人群。
fig1, ax1 = plt.subplots(figsize=(12,7))
sc = sns.color_palette("Blues", 2)
sns.countplot(df_dd['婚姻状况'],hue=df['性别'], palette=sc)plt.xticks(np.arange(2), ('已婚', '未婚'))
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.legend(fontsize=16)
plt.show()
可以再从性别的维度看,无论是已婚还是未婚,都是男性大于女性,不会受到婚姻状况的影响。因为不知道当地的情况,无法下定结论就是女性没有购买力。可以进一步调查,如果只是女性的市场没有打开,尝试提高女性购买的欲望,可能会有收获。
4.3 年龄
fig1, ax1 = plt.subplots(figsize=(12,7))
sc = sns.color_palette("Blues", 2)
sns.countplot(df_dd['年龄'],hue=df['性别'], order=['0-17', '18-25', '26-35', '36-45', '46-50', '51-55', '55+'], palette=sc)
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.legend(fontsize=16)
plt.show()
从年龄看,无论是男性,还是女性,消费人数都是集中18-45岁。其中26-35这个年龄段最多,这个年龄段的人消费能力大。
s_gender = df_dd.groupby('年龄')['采购额'].sum()plt.figure(figsize=(10, 6))
plt.subplot(1, 1, 1)
sc = sns.color_palette("Blues_r", 8)
sns.barplot(s_gender.index, s_gender.values, order=['0-17', '18-25', '26-35', '36-45', '46-50', '51-55', '55+'], palette=sc)plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.grid(axis='x')
plt.title('', fontsize=18)
plt.grid(axis='x')
plt.show()
消费金额的分布是跟购买人数的分布式一致的,都是集中在18-45岁,这个年龄区间的人购买力比较大。
4.4 城市
explode = (0.1, 0, 0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd['城市类别'].value_counts(), explode=explode,labels=df['城市类别'].unique(), autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_r", 3))ax1.axis('equal')
plt.tight_layout()
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')plt.legend(fontsize='16')
plt.show()
从购买的人数看,C城市人最多,A城市人最少。
explode = (0.1, 0, 0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd.groupby('城市类别')['采购额'].sum(), explode=explode,labels=df['城市类别'].unique(), autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_r", 3))ax1.axis('equal')
plt.tight_layout()
plt.legend()
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')plt.legend(fontsize='16')
plt.show()
从消费总额看,A城市是最低的,C城市虽然购买人数超过一半,但是消费总额却三分之一都不到。
可以看出,B城市的人购买力是最大的,购买的人数虽少,但是每个人的购买金额要大于其他两个城市的人。其次是A城市,购买力最低的是C城市,虽然C城市购买的人数要多于其他两个城市,但是消费总额却低于其他两个城市,可以看出A城市的购买力比较低。
hue_order=['0-17', '18-25', '26-35', '36-45', '46-50', '51-55', '55+']
order=['A', 'B', 'C']
fig1, ax1 = plt.subplots(figsize=(12,7))
sc = sns.color_palette("Blues_d", 7)
sns.countplot(df_dd['城市类别'],hue=df['年龄'], order=order, hue_order=hue_order, palette=sc)
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.legend(fontsize=16)
plt.show()
从3个城市的年龄段分布看,A城市在各个年龄段的人数都是最少的,C城市高龄人数比较多。
4.5 居住城市年数
labels=['1年','2年','3年','4年以上','游客']
explode = (0.1, 0.1,0,0,0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd['居住城市年数'].value_counts(),explode=explode, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_d"))
sc = sns.color_palette("hls", 5)
sns.set_palette(sc)
ax1.axis('equal')
plt.tight_layout()
plt.legend(fontsize=16)
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')
plt.show()
labels=['1年','2年','3年','4年以上','游客']
explode = (0.1, 0.1,0,0,0)
fig1, ax1 = plt.subplots(figsize=(10,7))
patches, texts, autotexts = ax1.pie(df_dd.groupby('居住城市年数')['采购额'].sum(), explode=explode, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90, colors=sns.color_palette("Blues_d"))
sc = sns.color_palette("hls", 5)
sns.set_palette(sc)
ax1.axis('equal')
plt.tight_layout()
plt.legend(fontsize=16)
for t in texts:t.set_size('xx-large')
for at in autotexts:at.set_size('xx-large')
plt.show()
从购买人数看,居住在城市第一年的购买人数是最多的,从消费总额看,第二年的人购买消费总额是最高的,但是购买人数是比第一年的人少。随着居住年数的增加,购买的人数是递减的。
居住在城市第二年的人消费人数和消费金额都是最高的,其他都比较低,对于居住2年的可以进行适当营销,提高留存。
4.6 职业
fig1, ax1 = plt.subplots(figsize=(12,7))
x = df_dd['职业'].value_counts().sort_values().index
y = df_dd['职业'].value_counts().sort_values().values
sns.barplot(x, y, order=x, palette="Blues_d")
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.show()
fig1, ax1 = plt.subplots(figsize=(12,7))
x = df_dd.groupby('职业')['采购额'].sum().sort_values().index
y = df_dd.groupby('职业')['采购额'].sum().sort_values().sort_values().values
sns.barplot(x, y, order=x, palette="Blues_d")
plt.xlabel('', fontsize=16)
plt.ylabel('', fontsize=16)
plt.show()
各职业的消费人数和消费总额排名大致一样,前三名都是4、0、7,购买人数多,消费总额高。根据购买人数的因素,应该把更多的商品针对购买职业人数多的职业。因为无法知道具体职业是什么,无从知道更多信息。
5 结论
- 已婚的购买人数比未婚的多。
- 都是集中在18-45岁,这个年龄区间的人购买力比较大
- B城市的购买力最大,购买人数最多的并不一定是购买力最大的。
- 购买人数随着居住城市年数的增加而减少,但是居住两年的人消费总额是最高的。
- 各职业的消费总额跟购买人数相关,职业人数差异还是比较大的。
Kaggle基于黑色星期五交易数据的用户画像分析---PYTHON相关推荐
- 毕业设计 - 题目:基于大数据的用户画像分析系统 数据分析 开题
文章目录 1 前言 2 用户画像分析概述 2.1 用户画像构建的相关技术 2.2 标签体系 2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析 3.1 数据格式 3.2 数据预处理 3. ...
- 基于多模型融合的用户画像分析统计方法研究
摘 要 随着信息技术的快速发展和大数据技术的广泛应用,企业的营销和产品的设计,对精细化.精准化的要求越来越高.主流的电商平台.搜索引擎以及短视频平台均推出了基于用户画像的个性化推荐服务,这其中相当一 ...
- kaggle实战:基于超市消费数据的用户个性化分析案例
大家好,今天给大家分享一篇 kaggle 数据集的新文章:基于一份超市消费数据集的用户个性化分析以及用户分群的实现. 更多详细内容参考原数据集地址: https://www.kaggle.com/co ...
- bootstrap-table真实交互数据_博思远略:基于AI交互场景数据构建用户画像的几点思考...
什么是用户,就是那些藏在每台电脑.手机.pad.智能watch屏幕背后的使用产品或服务恰如你我--有血有肉.有情绪.有想法.有阅历.有逻辑.有思考.固守某种习惯且独一无二.形形色色的人. 用户画像本质 ...
- 基于大数据的用户画像构建小百科全书
来源:http://suo.im/6aVjHQ 一. 什么是用户画像 用户画像是指根据用户的属性.用户偏好.生活习惯.用户行为等信息而抽象出来的标签化用户模型.通俗说就是给用户打标签,而标签是通过对用 ...
- 数据中台:基于标签体系的360°用户画像
作者丨石秀峰 全文共6375个字,建议阅读需18分钟 一.从"标签"说起 标签是用来标志您的产品目标和分类或内容,像是您给您的目标确定的关键字词,便于您自己和他人查找和定位自己目标 ...
- 如何利用大数据构建用户画像?
大数据时代,不仅普通用户可以享受到技术带来的便利,企业也可以从数据中提取有商业价值的信息,构建出用户画像,从而对用户行为进行分析和预测.虽然用户画像不是什么新鲜的概念,但是大数据技术的出现使得用户画像 ...
- 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据
如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据产品的体 ...
- RS(2)--从文本数据到用户画像
点击上方"算法猿的成长",关注公众号,选择加"星标"或"置顶" 总第 122 篇文章,本文大约 5100 字,阅读大约需要 15 分钟 上 ...
最新文章
- [LeetCode]--290. Word Pattern
- ThinkPHP多应用/多模块配置
- 【热点】黑客入侵的常用手段及防护措施分析
- ai automatic video editing software
- mysql inodb主键bug_MySQL的这个bug,坑了多少人?
- 实验一 命令解释程序的编写
- 2020秋招CV面试知识点汇总
- 写高性能 Web 应用程序的 10 个技巧 转自微软资料 .
- jquery读取json文件然后赋值给html,Jquery读取json文件的代码举例
- wp文件转shp_MapGIS完美转shp攻略
- php frameset不显示,php加载frameset页面时显示空白怎么办_后端开发
- 处理器架构 (八) armv4v5v6 架构参考手册(4) Debug架构
- 中国兰花怎么养 中国兰花养殖方法及注意事项
- python学习之旅_第1天
- C#操作Excel(三)相关函数
- Oracle 之利用BBED修改数据块SCN----没有备份数据文件的数据恢复
- 《NFL橄榄球》:田纳西泰坦·橄榄1号位
- WinRAR4.20注册文件key文件注册码
- 高考成绩四川查询时间2021等位分,2021年艺考时间
- live2d手机制作软件_live2dviewerex手机版app