京东平台小家电用户画像分析报告

通过对小家电用户一周订单数据的分析,发现主要消费者为25-35岁的已婚男性,集中在一线城市,学历较高且对促销敏感。电风扇销量虽高但受季节影响,推荐秋季促销主打净水器、饮水机、加湿器等产品。活动宜在周二、周六的10点和22点进行,注重产品口碑和促销形式创新。
摘要由CSDN通过智能技术生成

一、项目背景

由于近段时间小家电类目的订单数量、产品浏览量、搜索数量等指标均有所下降,现在计划进行一次促销活动,活动前希望能针对小家电的用户特征给出一些建议。

数据:有两个表,user_info用户信息,order_d订单信息,从数据库提取了8月13日~8月19日一周的订单数据。

字段说明如下:
在这里插入图片描述
分析思路
一场促销活动必然包含以下几个部分:
● 促销活动的受众 -> 用户的基本属性
● 促销活动的时间 -> 用户的购物行为属性
● 促销活动的产品 -> 用户的偏好属性
从这些角度去勾勒小家电消费群体的用户画像,从用户特征本身来为促销活动提供建议和指导。
在这里插入图片描述

二、用户基本属性分析

性别和年龄

小家电用户以男性居多,但男女比例相差不是特别大;
用户年龄多在45岁以下,以25-35岁的青年人居多。
在这里插入图片描述

地域分布

小家电类目的客户量排名前五的省份为广东、江苏、北京、上海、山东,除北京外,其它省份均为东部沿海省份。
用户量最多的为北上广深四个超一线城市,用户大都集中在一线城市。
在这里插入图片描述

婚育状况

近七成用户已婚,超六成用户有孩子的可能性高
在这里插入图片描述

教育水平

绝大多数小家电用户学历在专科及以上,说明该类目的用户学历水平比较高;
大多数用户从事互联网、白领、教师等职业。
在这里插入图片描述

三、行为属性分析

购买商品类目分布

从小家电细分品类订单量来看,电风扇的销量遥遥领先,但存在明显的季节周期性,考虑到季节更替,本次促销活动开展时夏天已经结束,因此在本次促销活动中因选择净水器、饮水机、加湿器等产品作为主打产品,特别是加湿器在秋天预期销量较好,应该适当加大力度;另外可以利用往年同期销售数据进行分析,看能否找到其它合适的产品。
在这里插入图片描述

从时间维度进行订单拆解

从星期的维度来看,周六和周二的订单量最多,周三订单最少;
从时间维度来看,10点,14点,22点这三个时间点订单量分布较多
在这里插入图片描述

用户的促销/评价敏感度

绝大部分的小家电消费用户对促销高度敏感,但是仅有一小部分对促销活动是极度敏感的。这说明针对小家电消费用户的促销活动应当确定合适的促销力度,并在促销活动的形式上多下功夫。
绝大部分的小家电消费用户对产品的评论极度敏感。这说明小家电消费用户非常看重产品的口碑和使用反馈,在促销选品上可以选择评价高、评论数多的产品;在活动文案上可以多体现促销产品的口碑。
在这里插入图片描述

四、结论

小家电消费用户的特征:

  • 多数为来自一线城市的男性,但男女比例相差不是特别大
  • 大多年龄在30左右,已婚已孕,学历水平较高
  • 从事互联网、教师等收入相对高的行业
  • 喜欢在周二和周六的早上10点左右和晚上10点左右下单
  • 关注产品的促销活动和口碑良好的产品

对于促销活动的建议:

  • 文案:采取无性别风格的文案,突出产品对于家庭生活品质的提升,突出产品口碑
  • 产品:选择口碑好的净水器、饮水机、加湿器等产品
  • 时间:活动应该选在周二和周六的早9点和晚9点进行推送

注:因为此用户和订单数据集只有7天的数据,刻画的用户画像可能存在偏差,上面分析、结论及建议只是根据现有的数据得出,谨供参考。

五、代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('white',{'font.sans-serif':['simhei','Arial']})
user_df=pd.read_csv('./xjd/xjd_user_info.csv',sep='\t')
order_df=pd.read_csv('./xjd/xjd_order_d.csv',sep='\t')
order_df.info()

在这里插入图片描述

user_df.info()

在这里插入图片描述

pt_gender=user_df['ulp_base_sex'].value_counts().reset_index().rename(columns={'index':'性别','ulp_base_sex':'用户数'})
pt_gender.性别=pt_gender['性别'].map({1:'男', 0:'女',-1:'未知'})

pt_age=user_df['ulp_base_age'].value_counts().sort_index().reset_index().rename(columns={'index':'年龄段','ulp_base_age':'用户数'})
pt_age.年龄段=pt_age['年龄段'].map({-1:'未知',1:'18岁以下',2:'18-25岁',3:'25-35岁',4:'35-45岁',5:'45-55岁',6:'55岁以上'})

fig, ax = plt.subplots(1,2,figsize=(15,6))

ax1=plt.subplot(121)
ax1.set_title('小家电用户的性别分布', fontsize=20)
plt.pie(pt_gender['用户数'][0:2], labels = pt_gender['性别'][0:2], autopct = '%.2f%%', startangle = 90,textprops={'fontsize': 12}, pctdistance=1.35,colors = ['#1a445d','#5292ab'])
plt.axis('square')

ax2=plt.subplot(122)
ax2.set_title('小家电用户的年龄分布', fontsize=20)
sns.barplot(x=pt_age.年龄段[1:],y =pt_age['用户数'][1:],color='#5292ab',ax=ax2)
sns.despine(left=True)  
plt.grid(axis='y')
plt.ylabel('')
pt_pro=user_df['ulp_addr_province'].value_counts().reset_index().rename(columns={'index':'省份','ulp_addr_province':'用户数'})
pt_pro=pt_pro[pt_pro.省份!='-1'] #删除省份为-1的省份
pt_city=user_df['ulp_addr_city'].value_counts().reset_index().rename(columns={'index':'城市','ulp_addr_city':'用户数'})

fig, ax = plt.subplots(1,2,figsize=(15,6))

ax1=plt.subplot(121)
ax1.set_title('小家电用户省份的分布', fontsize=20)
sns.barplot(x=pt_pro.用户数,y =pt_pro.省份,color='#5292ab',ax=ax1)
plt.box(False)
plt.grid(axis='x')
plt.xlabel('用户数')
plt.ylabel('')

ax2=plt.subplot(122)
ax2.set_title('小家电用户前十城市分布', fontsize=20)
sns.barplot(x=pt_city.用户数[0:10],y=pt_city.城市[0:10],color='#5292ab',ax=ax2)
plt.box(False)
plt.grid(axis='x')
plt.xlabel('用户数')
plt.ylabel('')
pt_marriage=user_df['ulp_base_marriage'].value_counts().reset_index().rename(columns={'index':'婚否','ulp_base_marriage':'用户数'})
pt_marriage.婚否=pt_marriage['婚否'].map({1:'已婚', 0:'未婚',-1:'未知'})
pt_marriage=pt_marriage[pt_marriage.婚否!='未知']

pt_child=user_df['ulp_base_child'].value_counts().reset_index().rename(columns={'index':'有孩子可能性','ulp_base_child':'用户数'})
pt_child=pt_child[pt_child['有孩子可能性']!='-1']

fig, ax = plt.subplots(1,2,figsize=(15,6))

ax1=plt.subplot(121)
ax1.set_title('小家电用户的婚姻状况', fontsize=20)
plt.pie(pt_marriage['用户数'], labels = pt_marriage['婚否'], autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 12},colors = ['#1a445d','#5292ab'])
plt.axis('square')

ax2=plt.subplot(122)
ax2.set_title('小家电用户有孩子的可能性', fontsize=20)
sns.set_palette(sns.color_palette("PuBu_r"))
plt.pie(pt_child['用户数'],labels = pt_child['有孩子可能性'], autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 12})
plt.axis('square')
#用户的学历分布
pt_edu=user_df['ulp_base_education'].value_counts().sort_index().reset_index().rename(columns={'index':'学历','ulp_base_education':'用户数'})
pt_edu.学历=pt_edu['学历'].map({-1:'未知',1:'初中及以下',2:'高中(中专)',3:'大学(大专及本科)',4:'研究生(硕士及以上)'})
pt_edu=pt_edu[pt_edu.学历!='未知']

#用户的职业分布
pt_occup=user_df['ulp_base_profession'].value_counts().reset_index().rename(columns={'index':'职业','ulp_base_profession':'用户数'})
pt_occup.职业=pt_occup['职业'].map({'-1':'未知','a':'金融从业者','b':'医务人员','c':'公务员/事业单位','d':'白领/一般职员','e':'工人/服务业人员','f':'教师','g':'互联网从业人员','h':'学生'})
pt_occup=pt_occup[pt_occup.职业!='未知']

fig, ax = plt.subplots(1,2,figsize=(24,8))

ax1=plt.subplot(121)
ax1.set_title('小家电用户的学历分布', fontsize=20)
sns.barplot(x=pt_edu.学历,y =pt_edu['用户数'][1:],color='#5292ab',ax=ax1)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('用户数')

ax2=plt.subplot(122)
ax2.set_title('小家电用户的职业分布', fontsize=20)
sns.barplot(x=pt_occup.职业,y =pt_occup['用户数'],color='#5292ab',ax=ax2)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('用户数')
sns.despine(left=True) 
valid_order_df=order_df[(order_df['sale_ord_valid_flag'] ==1)&(order_df['cancel_flag'] ==0)&
                              (order_df['check_account_tm'] !=0)&(order_df['before_prefr_unit_price'] !=0)&
                              (order_df['user_actual_pay_amount'] !=0)]
pt_category =valid_order_df['item_third_cate_name'].value_counts().reset_index().rename(columns={'index':'品类','item_third_cate_name':'订单数'})

fig, ax = plt.subplots(figsize=(15,6))

ax.set_title('小家电用户省份的分布', fontsize=20)
sns.barplot(x=pt_category.订单数,y =pt_category.品类,color='#5292ab')
plt.box(False)
plt.grid(axis='x')
plt.xlabel('订单数')
plt.ylabel('')
valid_order_df['星期']= (pd.to_datetime(valid_order_df.sale_ord_dt).dt.dayofweek+1)
valid_order_df['小时']=(valid_order_df.sale_ord_tm.str.split(' ').str[1].str.split(':').str[0]).astype(int)
#按周查看
pt_week=valid_order_df['星期'].value_counts().sort_index().reset_index().rename(columns={'index':'星期','星期':'订单数'})
pt_week['星期']=pt_week['星期'].map({1:'周一',2:'周二',3:'周三',4:'周四',5:'周五',6:'周六',7:'周日'})

fig, ax = plt.subplots(1,2,figsize=(15,6))

ax1=plt.subplot(121)
ax1.set_title('小家电用户订单数量的周分布', fontsize=20)

sns.pointplot(x=pt_week.星期,y =pt_week.订单数,color='#5292ab',ax=ax1)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('订单数')


ax2=plt.subplot(122)
ax2.set_title('小家电用户订单数量的时间分布', fontsize=20)
sns.pointplot(x=pt_hour.小时,y =pt_hour.订单数,color='#5292ab',ax=ax2)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('订单数')

sns.despine(left=True)  
user_df['促销敏感度']=user_df[user_df['cfv_sens_promotion']!='-1']['cfv_sens_promotion'].str.split('-').str[1].astype(int)
pt_promotion=user_df['促销敏感度'].value_counts().sort_index().reset_index().rename(columns={'index':'促销敏感度','促销敏感度':'用户数'})
pt_promotion.促销敏感度=pt_promotion.促销敏感度.map({1:'不敏感',2:'轻度敏感',3:'中度敏感',4:'高度敏感',5:'极度敏感'})

user_df['评价敏感度']=user_df[user_df['cfv_sens_comment']!='-1']['cfv_sens_comment'].str.split('-').str[1].astype(int)
pt_comment=user_df['评价敏感度'].value_counts().sort_index().reset_index().rename(columns={'index':'评价敏感度','评价敏感度':'用户数'})
pt_comment.评价敏感度=pt_comment.评价敏感度.map({1:'不敏感',2:'轻度敏感',3:'中度敏感',4:'高度敏感',5:'极度敏感'})

fig, ax = plt.subplots(1,2,figsize=(24,8))

ax1=plt.subplot(121)
ax1.set_title('用户的促销敏感度分布', fontsize=20)
sns.barplot(x=pt_promotion.促销敏感度,y =pt_promotion['用户数'],color='#5292ab',ax=ax1)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('用户数')

ax2=plt.subplot(122)
ax2.set_title('用户的评价敏感度分布', fontsize=20)
sns.barplot(x=pt_comment.评价敏感度,y =pt_comment['用户数'],color='#5292ab',ax=ax2)
plt.grid(axis='y')
plt.xlabel('')
plt.ylabel('用户数')

sns.despine(left=True)
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值