这里写自定义目录标题

  • 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. 毕业设计 - 题目:基于大数据的用户画像分析系统 数据分析 开题

    文章目录 1 前言 2 用户画像分析概述 2.1 用户画像构建的相关技术 2.2 标签体系 2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析 3.1 数据格式 3.2 数据预处理 3. ...

  2. 基于多模型融合的用户画像分析统计方法研究

    摘  要 随着信息技术的快速发展和大数据技术的广泛应用,企业的营销和产品的设计,对精细化.精准化的要求越来越高.主流的电商平台.搜索引擎以及短视频平台均推出了基于用户画像的个性化推荐服务,这其中相当一 ...

  3. kaggle实战:基于超市消费数据的用户个性化分析案例

    大家好,今天给大家分享一篇 kaggle 数据集的新文章:基于一份超市消费数据集的用户个性化分析以及用户分群的实现. 更多详细内容参考原数据集地址: https://www.kaggle.com/co ...

  4. bootstrap-table真实交互数据_博思远略:基于AI交互场景数据构建用户画像的几点思考...

    什么是用户,就是那些藏在每台电脑.手机.pad.智能watch屏幕背后的使用产品或服务恰如你我--有血有肉.有情绪.有想法.有阅历.有逻辑.有思考.固守某种习惯且独一无二.形形色色的人. 用户画像本质 ...

  5. 基于大数据的用户画像构建小百科全书

    来源:http://suo.im/6aVjHQ 一. 什么是用户画像 用户画像是指根据用户的属性.用户偏好.生活习惯.用户行为等信息而抽象出来的标签化用户模型.通俗说就是给用户打标签,而标签是通过对用 ...

  6. 数据中台:基于标签体系的360°用户画像

    作者丨石秀峰 全文共6375个字,建议阅读需18分钟 一.从"标签"说起 标签是用来标志您的产品目标和分类或内容,像是您给您的目标确定的关键字词,便于您自己和他人查找和定位自己目标 ...

  7. 如何利用大数据构建用户画像?

    大数据时代,不仅普通用户可以享受到技术带来的便利,企业也可以从数据中提取有商业价值的信息,构建出用户画像,从而对用户行为进行分析和预测.虽然用户画像不是什么新鲜的概念,但是大数据技术的出现使得用户画像 ...

  8. 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据

    如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232  作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据产品的体 ...

  9. RS(2)--从文本数据到用户画像

    点击上方"算法猿的成长",关注公众号,选择加"星标"或"置顶" 总第 122 篇文章,本文大约 5100 字,阅读大约需要  15 分钟 上 ...

最新文章

  1. [LeetCode]--290. Word Pattern
  2. ThinkPHP多应用/多模块配置
  3. 【热点】黑客入侵的常用手段及防护措施分析
  4. ai automatic video editing software
  5. mysql inodb主键bug_MySQL的这个bug,坑了多少人?
  6. 实验一 命令解释程序的编写
  7. 2020秋招CV面试知识点汇总
  8. 写高性能 Web 应用程序的 10 个技巧 转自微软资料 .
  9. jquery读取json文件然后赋值给html,Jquery读取json文件的代码举例
  10. wp文件转shp_MapGIS完美转shp攻略
  11. php frameset不显示,php加载frameset页面时显示空白怎么办_后端开发
  12. 处理器架构 (八) armv4v5v6 架构参考手册(4) Debug架构
  13. 中国兰花怎么养 中国兰花养殖方法及注意事项
  14. python学习之旅_第1天
  15. C#操作Excel(三)相关函数
  16. Oracle 之利用BBED修改数据块SCN----没有备份数据文件的数据恢复
  17. 《NFL橄榄球》:田纳西泰坦·橄榄1号位
  18. WinRAR4.20注册文件key文件注册码
  19. 高考成绩四川查询时间2021等位分,2021年艺考时间
  20. live2d手机制作软件_live2dviewerex手机版app

热门文章

  1. 开源浏览器--Firefox1.0
  2. 初级计算机知识试题及答案,计算机维修工初级理论知识试卷(后面附答案).doc...
  3. Linux下修改时区为东八区
  4. [CloudReader] 更新日志-云阅
  5. decode函数用法
  6. 判断手机号码属于哪个地区 哪个运营商(移动、联通、电信、)
  7. JS 双击事件绑定和取消事件绑定
  8. BufferedReader详解
  9. 用js删除html注释
  10. matlab 分块矩阵的行列式,【原创】行列式计算7种技巧7种手段,超级有用