精华内容
下载资源
问答
  • 电商用户画像分析

    千次阅读 2021-01-13 15:27:02
    通过京东用户信息数据、用户订单数据对用户进行用户画像分析,给出促销活动建议 3 数据理解 1)数据来源京东平台用户信息和订单信息(2020年8月13日-8月19日) 2) 数据字段说明 ①用户信息表共有39个字段,共计325,...

    1 项目背景

    1.1 用户画像概念

    用户画像是什么?

    用户画像是真实用户的虚拟代表,是建立在一系列真实数据之上的目标用户模型,它的本质是用户特征的“可视化”,抽象出相应的标签,拟合而成的虚拟的形象,主要包含自然属性、社会属性、行为属性及心理属性。需要注意的是,用户画像是将一类有共同特征的用户聚类分析后得出的,因而并非针对某个具像的特定个人。

    用户画像有什么用?

    • 帮助我们更加立体认识用户,培养用户思维、洞察用户的需求,进而优化完善产品,提升用户体验;
    • 帮助我们更加精准进行决策,通过市场数据推论到产品的定位人群,对市场细分和用户分群,做到精细化运营。

    1.2 项目说明

    本文利用京东平台真实案例,进行实操分析。类似京东这个量级的平台,无论从产品类目和受众用户都是比较庞大,促使现今电商平台主推千人千面,我们这里针对京东电商平台小家电数据进行用户画像。

    1.3 提出问题

    这里我们模拟一个业务场景,如下:

    最近平台小家电类目的产品浏览量、订单数量、搜索数量等都有所下降,运营部门计划对小家电类目进行一次季末促销活动,希望你能针对小家电消费用户特征给出建议?

    1.4 数据理解

    1)数据来源京东平台用户信息和订单信息(2020年8月13日-8月19日)
    2) 数据字段说明
    ①用户信息表共有39个字段,共计325,816条记录。

    • 其字段名称对照关系如下:

    ②用户订单表共有24个字段,共计9,640,118条记录。

    • 其字段名称对照关系如下:
      在这里插入图片描述

    2 数据处理

    2.1 数据导入

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns 
    # sns.set_style('whitegrid')
    from scipy import stats
    # 解决matplotlib中文乱码
    from matplotlib.ticker import FuncFormatter
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    import warnings
    warnings.filterwarnings('ignore')
    
    user_df  = pd.read_csv('data/xjd_user_info.csv', sep='\t', encoding="utf-8", dtype=str)
    user_cart_df  = pd.read_csv('data/xjd_user_cart.csv', sep='\t', encoding="utf-8", dtype=str)
    order_df  = pd.read_csv('data/xjd_order_d.csv', sep='\t', encoding="utf-8", dtype=str)
    

    2.2 转换特征属性

    order_df['sale_qtty'] = order_df['sale_qtty'].astype('int')
    order_df['sale_ord_valid_flag'] = order_df['sale_ord_valid_flag'].astype('int')
    order_df['cancel_flag'] = order_df['cancel_flag'].astype('int')
    order_df['self_ord_flag'] = order_df['self_ord_flag'].astype('int')
    
    order_df['before_prefr_unit_price'] = order_df['before_prefr_unit_price'].astype('float')
    order_df['after_prefr_unit_price'] = order_df['after_prefr_unit_price'].astype('float')
    order_df['user_actual_pay_amount'] = order_df['user_actual_pay_amount'].astype('float')
    order_df['total_offer_amount'] = order_df['total_offer_amount'].astype('float')
    
    order_df.loc[:,'check_account_tm '] = pd.to_datetime(order_df.loc[:,'check_account_tm'])
    order_df.loc[:,'sale_ord_tm'] = pd.to_datetime(order_df.loc[:,'sale_ord_tm'])
    order_df.loc[:,'sale_ord_dt'] = pd.to_datetime(order_df.loc[:,'sale_ord_dt'])
    

    2.3 重复值处理

    #查看是否有重复值,方便后续连接两表
    user_df['user_log_acct'].nunique()
    

    2.4 数据一致化

    # 将订单表和用户信息表合并
    order_user_df = pd.merge(order_df, user_df, on='user_log_acct')
    # 发现有重复值,在做用户属性的时候不需要有重复值,所以去除重复用户ID。
    
    # 去除重复值,保留重复数据的第一个
    user_info_df = order_user_df.drop_duplicates(subset=['user_log_acct'], keep='first') 
    

    3 问题分析

    这是一个非常典型的对用户画像进行构建和分析的需求,需求要求我们能够对促销活动进行一些建议,
    一场促销活动必然包含以下几个部分:
    ● 促销活动的受众 -> 用户的基本属性
    ● 促销活动的时间 -> 用户的购物行为属性
    ● 促销活动的产品 -> 用户的偏好属性

    我们可以从这些角度去勾勒出小家电消费群体的用户画像,从而可以进一步从用户特征本身来为促销活动提供建议和指导

    因此根据业务问题,将其拆解为以下三个具体维度来分析:

    • 用户基本属性
    • 用户购买行为属性
    • 用户商品偏好

    3.1 用户基本属性

    基本属性包括自然属性和社会属性。

    • 自然属性:性别、年龄、地域等;
    • 社会属性:婚育状况、学历、职业等。

    3.1.1 用户性别分布

    数据表中不存在完全重复的数据,在性别字段上,共有三个值,分别是1,0,和-1,其中1代表男性,0代表女性,而-1则代表未识别。

    user_sex_df = user_info_df.groupby('ulp_base_sex', as_index=False)['user_log_acct'].\
    							agg({'ulp_base_sex_count':'count'})
    # 女性用户
    female_user = user_sex_df['ulp_base_sex_count'][1] 
    # 男性用户
    male_user = user_sex_df['ulp_base_sex_count'][2] 
    
    labels = ['男','女']
    Y = [male_user, female_user]
    fig = plt.figure(figsize=(7,7))
    pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                     autopct='%1.0f%%', 
                                     startangle=90,
                                     colors=['#6699cc','#cc6699'])
                                     
    plt.title("平台用户的性别分布",size=24)
    
    for i in p_text:      # 设置饼图内部的文字
        i.set_size(16)
        i.set_color('w')
        
    for i in l_text:      #  # 设置饼图外部的文字
        i.set_size(16)
        i.set_color('r')
        
    plt.show() 
    

    在这里插入图片描述
    分析:
    从数据来看,小家电消费用户男性居多,占比约55%,但与女性用户数量差别不是特别大(10%)

    3.1.2 用户年龄分布

    表中用户年龄用数字指代,其中[1,2,3,4,5,6]分别代表[‘18岁以下’, ‘18~25岁’, ‘25~35岁’, ‘35~45岁’, ‘45~55岁’, ‘55岁以上’],而-1则代表未识别。

    user_age_df = user_info_df.groupby('ulp_base_age', as_index=False)['user_log_acct']\
                    .agg({'user_age_count':'count'})
    
    # 类型转换&异常值处理
    user_age_df['ulp_base_age'] = user_age_df['ulp_base_age'].astype('int')
    user_age_df = user_age_df[user_age_df['ulp_base_age'] > 0]
    
    x = ['18岁以下', '18~25岁',  '25~35岁', '35~45岁', '45~55岁', '55岁以上']
    y = user_age_df['user_age_count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    
    plt.title("小家电消费用户的年龄分布", size=24) # 图标题
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    plt.bar(x, y, width=0.3, color='#6699CC')
    # sns.barplot(x, y, palette="Greens_r")
    for i in range(len(x)):
    	plt.text(i,x[i]+3000,'%d'%x[i],ha='center',va='center')
    plt.show()
    

    ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhdTE0Mw==,size_16,color_FFFFFF,t_70)
    分析:
    用户多集中在25-35岁的年龄区间 ,25岁以下的年轻用户和45岁以上的中老年用户比较少。

    3.1.3 用户地域分布

    # 用户省份分布
    user_region_df = user_info_df.groupby('ulp_addr_province', as_index=False)['user_log_acct'].\
                        agg({'region_count':'count'})
    
    user_region_df.columns = ['province_name','region_count']
    user_region_df = user_region_df.sort_values(by='region_count', ascending=False)
    # 去除异常值
    user_region_df = user_region_df[user_region_df['province_name'] != '-1']
    
    x = user_region_df['province_name'][::-1] 
    y = user_region_df['region_count'][::-1] 
    
    plt.figure(figsize=(20,13), dpi=80)
    
    plt.title("小家电消费用户的地域分布", size=24) # 图标题
    
    plt.xlabel('region_count',size=16)
    plt.ylabel('province_name',size=16)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    plt.barh(x, y, height=0.8, color='#6699CC')
    plt.xlim(xmax=60000)
    for i in range(len(x)):
    	plt.text(x[i]+2000,i,'%d' %x[i],ha='center',va='center',size=12)
    plt.show()
    
    
    # 所在城市分布
    user_city_df = user_info_df.groupby('ulp_addr_city', as_index=False)['user_log_acct']\
                    .agg({'city_count':'count'})\
                    .sort_values(by='city_count', ascending=False)
    
    # 取前十个城市
    user_city_df = user_city_df[:10]
    x = user_city_df['ulp_addr_city'][::-1]
    y = user_city_df['city_count'][::-1]
    
    plt.figure(figsize=(20,8),dpi=80)
    
    plt.title("小家电消费用户的城市分布", size=24) # 图标题
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
     # height是水平条形图宽度
    plt.barh(x, y, align='center', height=0.6, color='#6699CC')
    plt.show()
    

    在这里插入图片描述

    分析:
    小家电类目的消费者来自广东的最多,其次是江苏和北京。排名前五的地区均为东部沿海地区。在城市分布方面,北上广深 四个超一线城市占据消费用户数量的前四名。

    3.1.4 用户受教育水平

    用户受教育水平[1,2,3,4]代表的是[‘初中及以下’, ‘高中(中专)’, ‘大学(专科及本科)’, ‘研究生(硕士及以上’],-1代表用户教育水平未被识别

    user_edu_df = user_info_df.groupby('ulp_base_education', as_index=False)['user_log_acct']\
                    .agg({'edu':'count'})\
                    .sort_values(by='ulp_base_education', ascending=True)
    user_edu_df = user_edu_df[user_edu_df['ulp_base_education'] != '-1']
    x = ['初中及以下', '高中(中专)', '大学(专科及本科)', '研究生(硕士及以上']
    y = user_edu_df['edu']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    plt.title("用户的学历分布", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    plt.bar(x, y, width=0.3, color='#6699CC')
    # sns.barplot(x, y, palette="Oranges_r")
    plt.show() 
    

    uZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhdTE0Mw==,size_16,color_FFFFFF,t_70)
    分析:
    绝大多数小家电消费用户拥有大学及以上学历,说明该类目的消费者学历水平比较高

    3.1.5 用户职业分布

    用户职业[a,b,c,d,e,f,g,h]代表的是[‘金融从业者’, ‘医务人员’, ‘公务员/事业单位’, ‘白领/一般职员’, ‘工人/服务业人员’, ‘教师’, ‘互联网从业人员’, ‘学生’],-1代表用户职业未被识别。

    user_profession_df = user_info_df.groupby('ulp_base_profession', as_index=False)['user_log_acct']\
                        .agg({'profession':'count'})\
                        .sort_values(by='ulp_base_profession', ascending=True)
    user_profession_df = user_profession_df[user_profession_df['ulp_base_profession'] != '-1']
    
    x = ['金融从业者', '医务人员', '公务员/事业单位', '白领/一般职员', '工人/服务业人员', '教师', '互联网从业人员', '学生']
    y = user_profession_df['count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    plt.ylim(ymax=50000) # y轴坐标最大值设为50000
    plt.title("用户的职业分布", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    # plt.bar(x, y, width=0.5, color='#6699CC')
    sns.barplot(x, y)
    plt.show() 
    

    在这里插入图片描述分析:
    职业一般以互联网行业或者其他行业的白领职业为主。

    3.1.6 用户婚育情况

    用户婚育状况中[0,1]代表的是[‘未婚’, ‘已婚’],-1代表用户婚育状况未被识别。

    user_marriage_df = user_info_df.groupby('ulp_base_marriage', as_index=False)['user_log_acct']\
                        .agg({'marriage':'count'})\
                        .sort_values(by='marriage', ascending=False)
    married_user = user_marriage_df['marriage'].iloc[0] # 取第0行
    unmarried_user = user_marriage_df['marriage'].iloc[1] # 取第1行
    
    labels = ['已婚', '未婚']
    Y = [married_user, unmarried_user]
    fig = plt.figure(figsize=(7,7))
    pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                     autopct='%1.1f%%', 
                                     startangle=90,
                                    colors=['#6699cc','#cc6699']) # startangle是图旋转角度
    plt.title("用户的婚姻情况")
    
    for i in p_text:      # 设置饼图内部的文字
        i.set_size(16)
        i.set_color('w')
        
    for i in l_text:      #  # 设置饼图外部的文字
        i.set_size(16)
        i.set_color('r')
        
    plt.show() 
    

    在这里插入图片描述
    分析:
    已婚的用户占59.51%,未婚的用户占40.49%,已婚用户高于未婚用户的数量,但未婚人群也需要重视。

    3.1.7 用户有孩可能性

    user_child_df = user_info_df.groupby('ulp_base_child', as_index=False)['user_log_acct']\
                    .agg({'child':'count'})\
                    .sort_values(by='child', ascending=False)
                    
     # 剔除未能识别的数据               
    user_child_df = user_child_df[user_child_df['ulp_base_child'] != '-1']
    very_high = user_child_df['child'].iloc[1] # 高,取第1行
    high = user_child_df['child'].iloc[0] # 较高,取第0行
    low = user_child_df['child'].iloc[2] # 较低,取第2行
    very_low = user_child_df['child'].iloc[3] # 低,取第3行
    
    labels = ['高', '较高', '较低', '低']
    Y = [very_high, high, low, very_low]
    fig = plt.figure(figsize=(7,7))
    colors = ['tomato','lightskyblue','goldenrod','green']
    explode = [0.1,0,0,0]
    pathches,l_text,p_text = plt.pie(Y, labels=labels, 
                                     autopct='%1.1f%%', 
                                     startangle=90.
                                     colors=colors,
                                     explode=explode)
                                    # startangle是图旋转角度
    
    plt.title("用户的有孩可能性分布")
    
    plt.legend(loc='best',fontsize=12)
    
    for i in p_text:      # 设置饼图内部的文字
        i.set_size(16)
        i.set_color('w')
        
    for i in l_text:      #  # 设置饼图外部的文字
        i.set_size(16)
        i.set_color('r')
        
    plt.show() 
    

    在这里插入图片描述

    分析:
    用户有孩的概率处于“较高”或“高”层级的人数约占56%,而处于“较低”和“低”层级上的人数约占44%,相比较来看,用户中有孩的可能性稍高一些。

    总结: 从用户基本属性看出,小家电消费用户多为来自一线城市的男性,年龄在30岁左右,已婚已育,高学历,大部分从事互联网或其他白领行业。

    3.2 用户购买行为属性

    在订单数据中,每一条记录代表着一个订单下单个商品的购买情况,也就是说,同一个订单中购买的多个商品是按照商品种类分割成多条记录的,在观察用户购买商品的品类分布时,应该以订单为一个观察单位。

    3.2.1 用户购买商品类目分布

    选取有效订单(订单有效条件为:订单有效标志=1,订单取消标志=0,支付时间!=空值,优惠后单价>0)

    # 订单维度的分析, 使用的是有效订单
    
    vaild_order_user_df = order_user_df[(order_user_df['sale_ord_valid_flag'] == 1)
                              &(order_user_df['cancel_flag'] == 0)
                              &(order_user_df['check_account_tm'] != 0)
                              &(order_user_df['before_prefr_unit_price'] != 0)
                              &(order_user_df['user_actual_pay_amount'] != 0)] # 筛选有效订单
                              
    user_order_cate_df = vaild_order_user_df.groupby('item_third_cate_name', as_index=False)['sale_ord_id']\
                        .agg({'cate_count':'count'})\
                        .sort_values(by='cate_count', ascending=False)
    
    x = user_order_cate_df['item_third_cate_name']
    y = user_order_cate_df['cate_count']
    
    plt.figure(figsize=(20,15),dpi=80)
    plt.xlabel('订单数量', size=20)
    #plt.barh(x, y, align='center', color='#6699CC')
    plt.title("小家电消费用户的细分品类订单量", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    sns.barplot(y, x)
    plt.show()
    

    在这里插入图片描述

    分析:
    从订单数据上来看,电风扇是最受欢迎的品类。但是这个订单数据是八月中旬的数据,那时正值天气炎热,所以电风扇需求量比较大,为季节性产品。
    如果促销活动是在夏天快要结束或者夏天结束之后进行,那应该选择第二受欢迎的 净水器、饮水机和加湿器等类目。

    3.2.2 用户订单数量的日期分布

    # 要按星期统计,所以要把时间按照星期几分组
    # 先把时间变星期,再按星期分组
    
    vaild_order_user_df_2 = vaild_order_user_df.copy()
    
    # 将订单日期转化为星期,数字0—6,依次代表周日、周一、周二、周三、周四、周五、周六
    vaild_order_user_df_2['order_time_week'] = vaild_order_user_df_2['sale_ord_tm'].apply(lambda x: x.strftime('%w'))
    
    user_order_week_df = vaild_order_user_df_2.groupby('order_time_week', as_index=False)['sale_ord_id'].\
                                    agg({'week_count':'count'}).sort_values(by='order_time_week', ascending=True)
    
    user_order_week_df[0:1] # 0是周日
    user_order_week_df[1:] # 1-6是周一到周六
    # 两个dataframe上下拼接,也就是把后面的dataframe,追加到前面dataframe的末尾
    user_order_week_df_2 = user_order_week_df[1:].append(user_order_week_df[0:1])
    user_order_week_df_2
    
    x = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    y = user_order_week_df_2['week_count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    
    plt.ylim(ymin=0,ymax=80000) # y轴坐标,最小值0.最大值设为60000
    plt.title("小家电消费用户订单数量的日期分布", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    plt.plot(x, y, linewidth=2.0, color='#6699CC', linestyle='-')
    plt.show() 
    

    在这里插入图片描述
    分析:
    从整周的数据上来看,绝大部分订单都是在周二和周六完成的,而周三的订单量最少

    3.2.3 用户订单数量的时间分布

    # 把订单时间只保留小时
    vaild_order_user_df_2['order_time_hms'] = vaild_order_user_df_2['sale_ord_tm']\
                                                .apply(lambda x: x.strftime('%H:00:00'))
    
    user_order_hms_df = vaild_order_user_df_2.groupby('order_time_hms', as_index=False)['sale_ord_id'].\
                                    agg({'hms_count':'count'}).sort_values(by='order_time_hms', ascending=True)
    
    # 生成时间标签
    hour_list = [x for x in range(0, 24)]
    
    x = hour_list
    y = user_order_hms_df['hms_count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    
    plt.ylim(ymin=0,ymax=20000) # y轴坐标,最小值0.最大值设为20000
    plt.title("小家电消费用户订单数量的时间分布", size=24)
    
    plt.xticks(x, size=16) # x轴显示内容及字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    plt.plot(x, y, linewidth=2.0, color='#6699CC', linestyle='-', clip_on=False)
    plt.show() 
    

    在这里插入图片描述
    分析:
    从单日的每小时订单量来 看,早上10点-11点,晚上20点-22点是用户大量下单的时间。因此建议在周二和周六的早十点和晚八点各推送一 次促销的活动。

    3.2.4 用户的促销敏感度

    # 按用户维度统计的量, 取全部用户的数据
    
    cfv_sens_prom_df = user_info_df.groupby('cfv_sens_promotion', as_index=False)['user_log_acct']\
                        .agg({'cfv_sens_promotion_count':'count'})\
                        .sort_values(by='cfv_sens_promotion_count', ascending=False)
    
    user_info_df_2 = user_info_df.copy()
    user_info_df_2 = user_info_df_2[user_info_df_2['cfv_sens_promotion'] != '-1']
    
    cfv_sens_prom_df_2 = user_info_df_2.groupby('cfv_sens_promotion', as_index=False)['user_log_acct']\
                            .agg({'cfv_sens_promotion_count':'count'})\
                            .sort_values(by='cfv_sens_promotion_count', ascending=False)
    
    user_info_df_2['sens_promotion'] = user_info_df_2['cfv_sens_promotion']\
                                        .apply(lambda x: x[-1]) # 只保留最后一位字符
    
    user_order_sens_promotion_df = user_info_df_2.groupby('sens_promotion', as_index=False)['user_log_acct']\
                                    .agg({'sens_promotion_count':'count'})\
                                    .sort_values(by='sens_promotion', ascending=True)
    
    x = ['不敏感', '轻度敏感', '中度敏感', '高度敏感', '极度敏感']
    y = user_order_sens_promotion_df['sens_promotion_count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    
    plt.title("用户的促销敏感度分布", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    # plt.bar(x, y, width=0.5, color='#6699CC')
    sns.barplot(x,y)
    
    plt.show() 
    

    在这里插入图片描述
    分析:
    根据历史数据,绝大部分的小家电消费用户对促销高度敏感,但是仅有一小部分对促销活动是极度敏感的。这说明针对小家电消费用户的促销活动应当确定合适的促销力度,并在促销活动的形式上多 功夫。

    3.2.5 用户的评论敏感度

    cfv_sens_comment_df = user_info_df.groupby('cfv_sens_comment', as_index=False)['user_log_acct']\
                        .agg({'cfv_sens_comment_count':'count'})\
                        .sort_values(by='cfv_sens_comment_count', ascending=False)
    
    user_info_df_3 = user_info_df.copy()
    user_info_df_3 = user_info_df[user_info_df['cfv_sens_comment'] != '-1']
    
    cfv_sens_comment_df_2 = user_info_df_3.groupby('cfv_sens_comment', as_index=False)['user_log_acct']\
                        .agg({'cfv_sens_comment_count':'count'})\
                        .sort_values(by='cfv_sens_comment_count', ascending=False)
    
    user_info_df_3['sens_comment'] = user_info_df_3['cfv_sens_comment']\
                                        .apply(lambda x: x[-1]) # 只保留最后一位字符
    
    user_order_sens_comment_df = user_info_df_3.groupby('sens_comment', as_index=False)['user_log_acct']\
                                    .agg({'sens_comment_count':'count'})\
                                    .sort_values(by='sens_comment', ascending=True)
                                    
    x = ['不敏感', '轻度敏感', '中度敏感', '高度敏感', '极度敏感']
    y = user_order_sens_comment_df['sens_comment_count']
    
    plt.figure(figsize=(20,8),dpi=80)
    plt.style.use('ggplot')
    
    plt.title("小家电消费用户的评论敏感度分布", size=24)
    
    plt.xticks(size=16) # x轴字体大小调整
    plt.yticks(size=16) # y轴字体大小调整
    
    # plt.bar(x, y, width=0.5, color='#6699CC')
    sns.barplot(x,y)
    plt.show() 
    
    

    在这里插入图片描述

    分析:
    绝大部分的小家电消费用户对产品的评论极度敏感。 这说明小家电消费用户非常看重产品的口碑和使用反馈,在促销选品上可以选择评价高、评论数多的产品;在活动文案上可以多体现促销产品的口碑。

    3.3 用户的整体性画像描述

    - 消费用户的特征
    多数为来自一线城市的男性,年龄在30左右,已婚,有孩,学历水平较高,从事互联网、教师等高收入行业。 他们喜欢在周二和周六的早上10点左右和晚上10点左右下单。他们关注产品的促销活动,喜欢追求有生活 品味,有良好的口碑的产品。他们关心家庭,但是因为生活节奏和工作压力却又没有时间在家庭生活上付出 很多时间和精力。前两周他们最常购买的小家电是电风扇。

    4 总结及建议

    我们通过多个维度对小家电用户特征进行分析,对此群体用户有了一个立体的认知,如下:

    4.1 画像总结

    在这里插入图片描述

    4.2 促销活动建议:

    现已知用户的基本特征,结合文章第一部分对业务需求的拆解和分析思路,我们对此次促销活动给出如下建议:
    在这里插入图片描述
    注:
    因为此用户和订单数据集只有7天的数据(2020年8月13日-2020年8月19日),刻画的用户画像可能存在偏差。

    展开全文
  • 利用大数据来分析用户的行为与消费习惯,可以预测商品的发展趋势,提高产品质量。本书基于大型电商公司的真实用户画像,主要培养学员了解用户画像的内容,掌握构建用户画像的方法。
  • 电商行业用户画像分析案例 项目背景: 某线上母婴平台发现最近一年各类营销活动的效果不佳 ,且总体销售额没有明显的增长 。据了解,以往的营销活动面向所有用户, 部分 用户无论有无营销活动均稳定的消费,而有些...

    电商行业用户画像分析案例

    项目背景:

    某线上母婴平台发现最近一年各类营销活动的效果不佳 ,且总体销售额没有明显的增长 。据了解,以往的营销活动面向所有用户, 部分
    用户无论有无营销活动均稳定的消费,而有些用户很常时间未消费可能已转变为流失人群 。

    分析目的和价值:

    平台逐渐意识到用户分类的重要性 。 实现用户 分类后,可针对不同用户实施组合促销、会员卡充值、满减等营销活动。

    分析要求:

    1. 以 2019 年 8 月 3 日为分析时点统计每个用户的R值、 F 值、M 值
    2. 运用平均值作为RFM 各维度对应高低程度的判断值
    3. 使用判断函数或查找函数划分出不同的用户类别
    4. 针对不同用户给出不同的运营策略建议针对不同用户给出不同的运营策略建议
    5. 交付物为 交付物为word 或 pdf 形式的报告

    数据说明:

    数据为2019 年 1 月至 7 月某母婴电商平台的销售数据,其中,流水号为购物篮编号,一次购物产生一个购物篮编号,一个购物篮内
    可添加多个商品。

    注:R、F、M 每个维度下划分为两个程度,用户分类如下表

    用户类别R值F值M值
    重要价值用户
    重要发展用户
    重要保持用户
    重要挽留用户
    一般价值用户
    一般发展用户
    一般保持用户
    一般挽留用户

    数据处理:

    原始数据:

    image-20210409175441932

    1.选中原始数据,插入数据透视表,将【用户编号】拖入到行,【销售日期】拖入到值,选择最大值,【销售金额】拖入到最大值,修改名称为M值(指定时间区间内统计用户的消费总金额)

    image-20210409175657514

    2.求出F值

    ​ 2.1基于原始数据统计不重复的流水号,并关联对应的用户编号,因为原始数据中流水号有重复值,所以需要对其去重然后关联用户编号

    ​ 2.2 对去重关联后的数据进行数据透视,统计每个用户编号出现的次数就是F值

    image-20210409180642998

    3.求出R值,因为R值是基于2019/8/3号的时间节点,统计用户最近一次消费时点和当前时点的时间差,所以使用公式=DATE(2019,8,3)-B2求出R值

    image-20210409180952749

    4.求出RFM的平均值,然后根据RFM平均值,求出RFM的程度

    image-20210409181107710

    R程度:=IF(E2>$K$1,"低","高")

    F程度:=IF(C2>$k$3,"高","低")

    M程度:=IF(D2>$K$3,"高","低")

    R平均:=AVERAGE(E2:E7179)

    F平均:=AVERAGE(C2:C7179)

    M平均:=AVERAGE(D2:D7179)

    5.根据用户维度表,求出用户类别

    用户维度表:

    用户类别R值F值M值
    重要价值用户
    重要发展用户
    重要保持用户
    重要挽留用户
    一般价值用户
    一般发展用户
    一般保持用户
    一般挽留用户

    image-20210409185949391

    =IF(AND(F2="高",G2="高",H2="高"),"重要价值用户",IF(AND(F2="高",G2="低",H2="高"),"重要发展用户",IF(AND(F2="低",G2="高",H2="高"),"重要保持用户",IF(AND(F2="低",G2="低",H2="高"),"重要挽留用户",IF(AND(F2="高",G2="高",H2="低"),"一般价值用户",IF(AND(F2="高",G2="低",H2="低"),"一般发展用户",IF(AND(F2="低",G2="高",H2="低"),"一般保持用户","一般挽留用户")))))))

    图表可视化:

    1.选中处理后的结果,插入数据透视表,将【用户类别】拖入到行,列

    image-20210409190325431

    image-20210409190444473

    2.在【用户占比】列,右键选择【值显示方式】–【按某一字段汇总的百分比】

    image-20210409190831723

    3.将值复制出来,使用帕累托分析法,进行图表展示

    image-20210409191020679

    image-20210409191039553

    用户画像分析报告:

    用户画像分析报告
    通过用户最近一次消费、消费频次和消费金额三个维度搭建用户分类模型,已实现 8 类用户的划分(如下表),并统计本店各类用户数量(如下表)。发现平台的核心用户为一般挽留、一般发展和重要价值用户。

    image-20210409191646705image-20210409191039553

    针对不同的用户建议使用不同的运营策略,具体如下:
    **重要价值用户:**此类用户最近刚到访平台,而且消费频次和消费金额都很高,是平台营收的主要来源,建议保持现状并持续关注;
    **重要发展用户:**此类用户最近刚到访平台,且消费金额高,但消费频次低,可通过提升到店频次将此类用户转化为重要价值用户。建议观察此类用户购物篮的商品品类,参考品类复购周期,若已购买品类本身复购周期长,则可通过组合销售将复购周期长的商品和复购周期短且日常必需的商品捆绑,引导用户到本平台增加选购其他品类的商品,并转变为习惯,从而增加到店频次。平台缺少此类用户,可参考重要保持用户的运营策略实现重要保持用户到重要发展用户的转变;
    **重要保持用户:**此类用户很久没有到访平台,但到店频次和消费金额都很高,建议通过通知提醒顾客喜爱的商品有优惠活动使用户回流;
    **重要挽留用户:**此类用户很久没有到访平台,且到店频次低,但消费金额高,针对此类用户需要重点召回,建议通过会员日或定期不定品类的促销信息通知用户,提升用户粘性。平台缺少此类用户,可参考一般价值用户的运营策略实现一般价值用户到重要挽留用户的变;
    **一般价值用户:**此类用户最近刚到访平台,且到店频次高,但消费金额低,说明用户对价格敏感,可通过促销装、买二送一等形式刺激用户消费;
    **一般发展用户:**此类用户最近刚到访平台,但到店频次和消费金额都很低,说明平台主要商品对用户没有吸引力,建立提供此类用户之前的消费明细,挖掘用户喜好;
    **一般保持用户:**此类用户很久没有到访平台,且消费金额低,但到店频次高,说明用户即将转为流失用户,建议捆绑用户经常购买的商品和日常所需的其他品类商品,引导用户消费品类的转变而实现召回;
    **一般挽留用户:**此类用户很久没有到访平台,到店频次低,消费金额低,在运营成本有限的情况下,可放弃此类对此类用户的投入,本平台目前没有发现此类用户,说明用户对平台具备一定忠诚型。
    注:以上分析结论来自对用户画像分析报告数据的分析。

    展开全文
  • 电商用户画像python实战

    千次阅读 多人点赞 2020-04-11 20:48:53
    电商用户画像分析2.1 分析目的2.2 数据说明2.3 分析思路2.4 分析过程2.4.1 用户基本属性分析2.4.1.1 数据清洗2.4.1.2 男女占比分析2.4.1.3 年龄段占比分析2.4.1.4 地区/省份/城市用户TOP10分布2.4.1.4.1 地区用户...


    1.我认为的用户画像

    简单来说,就是通过你的基本信息,生活习惯、消费行为等方面来对你进行一个抽象的概括。

    构建用户画像的核心工作就是给用户贴标签,而标签是通过对用户各方面信息的分析后提炼出来的特征标识。

    下面直接通过一个案例来了解用python做用户画像。

    2.某电商用户画像分析

    2.1 分析目的

    通过对用户的基本属性信息,消费行为特征去构建用户画像,实现对用户进行分群,做精细化的区别营销,达到提效降本的效果。

    2.2 数据说明

    本次案例用到4张表,通过python连接mysql读取数据:

    # 导入相关模块
    import numpy as np
    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import datetime
    import warnings
    warnings.filterwarnings("ignore")
    # 解决中文乱码问题
    mpl.rcParams["font.family"] = "SimHei"
    mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负号
    plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
    # 魔法函数
    %matplotlib inline 
    import pymysql.cursors
    # 连接mysql数据库
    conn = pymysql.connect(host = 'localhost',port = 3306,user = 'root',password = '123456',charset = 'utf8')
    # 读取数据库
    pd.read_sql('show databases',conn)
    # 定义使用哪个数据库
    pd.read_sql('use jd3c',conn)
    # 查看数据表
    pd.read_sql('show tables',conn)
    

    在这里插入图片描述
    4张表的字段说明:
    在这里插入图片描述
    在这里插入图片描述
    由于字段的问题,创建时间和更新时间的值是一样的,所以只用使用一个创建时间字段。
    在这里插入图片描述
    在这里插入图片描述
    画一张图来显示这四张表的关系:
    在这里插入图片描述

    2.3 分析思路

    1、用户基本属性分析(整体的人群画像)

    • 男女占比分析
    • 年龄段占比分析
    • 地区/省份/城市用户TOP10分布

    2、用户购买手机偏好(TGI)分析

    • 不同性别的用户对手机品牌的偏好TOP10

    • 不同年龄段的用户对手机品牌的偏好TOP10

    • 不同地区的用户对手机品牌的偏好TOP10

    • 不同城市级别的用户对手机品牌的偏好TOP10

      注:TGI:即Target Group Index(目标群体指数)
      TGI指数= [目标群体中具有某一特征的群体所占比例/总体中具有相同特征的群体所占比例]×标准数100

    3、RFM模型

    • R:最近一次购买时间
    • F:购买的频次
    • M:购买的金额

    2.4 分析过程

    2.4.1 用户基本属性分析

    2.4.1.1 数据清洗

    方法1:使用info查看数据是否有缺失值。
    在这里插入图片描述
    方法2:使用isnull判断是否有缺失值。
    在这里插入图片描述
    查看数据是否有重复值。
    在这里插入图片描述
    本案例中的基本属性包括性别,年龄,地域,分布在users表和dim表,需要对这两张表进行连接。
    在这里插入图片描述

    2.4.1.2 男女占比分析

    在这里插入图片描述

    2.4.1.3 年龄段占比分析

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.4.1.4 地区/省份/城市用户TOP10分布
    2.4.1.4.1 地区用户TOP10分布

    在这里插入图片描述

    2.4.1.4.2 省份用户TOP10分布

    在这里插入图片描述

    2.4.1.4.3 城市用户TOP10分布

    在这里插入图片描述

    2.4.1.4.4 小结
    • 从地区角度来看,华东和华北地区的用户至少是其他地区用户的3倍。
    • 从省份/直辖市角度来看,北京(属于华北地区)和上海(属于华东地区)的用户也至少是其他省份/直辖市用户的3倍。
    • 从城市角度来看,除北京上海外,其他城市的用户数最多只有57个,北京上海的用户最少是其26倍以上。
    • 华东和华北地区的用户绝大部分是由北京和上海的用户组成。

    2.4.2 用户购买手机偏好(TGI)分析

    2.4.2.1 数据清洗

    把上面的df表和order_detail、product表进行连接。
    在这里插入图片描述
    在这里插入图片描述
    我们下面的分析需要用到手机品牌title这个字段,从上图可以看出title字段的值不规律,这里是导出excel进行手机品牌的提取。

    对数据进行清洗完毕后,read_csv导入。截图只能截取前半部分的字段。
    在这里插入图片描述
    截图截取后半部分字段,可以和上图合并一起看。
    在这里插入图片描述
    查看数据发现sell_point有缺失值。
    在这里插入图片描述
    使用isnull() == True查看缺失值。
    在这里插入图片描述
    由于本次案例不涉及到sell_point字段的分析,所以这里直接对该字段的值进行填充即可。
    在这里插入图片描述
    由于存在一个用户多次购买同一品牌手机,这里我们做一个去重的工作。

    当计算比如不同性别的用户对手机偏好度的时候,不会因为同一用户的多次购买同一品牌手机而导致该品牌手机用户数偏大。
    在这里插入图片描述

    2.4.2.2 不同性别的用户对手机品牌的偏好TOP10

    举例:
    目标群体中具有某一特征的群体所占比例:【喜欢21克品牌】的【男的】/【男的】
    总体中具有相同特征的群体所占比例:【喜欢21克品牌的男+女人数】/ 【男+女总人数】
    TGI:(【喜欢21克品牌】的【男的】/【男的】)/ 【喜欢21克品牌的人数】/ 【男+女人数】 * 100


    统计不同性别不同手机品牌的用户数。
    在这里插入图片描述
    统计不同性别的人数,与gender_phone进行merge合并后,每条记录都会显示该性别的总人数。
    在这里插入图片描述
    在这里插入图片描述
    计算TGI。
    在这里插入图片描述

    2.4.2.2.1 男性用户对手机品牌的偏好TOP10

    在这里插入图片描述
    存在问题:
    TGI排名靠前的手机类型,总用户数有80多的,人数较少可能导致TGI偏高
    TGI指数能够显示偏好的强弱,但很容易让人忽略具体的样本量大小
    在这里插入图片描述

    2.4.2.2.2 女性用户对手机品牌的偏好TOP10

    在这里插入图片描述

    2.4.2.2.3 作图并小结

    在这里插入图片描述
    小结:

    • 男性对微诺、荣耀、美翼品牌手机的偏好度较高;优思、比酷、美翼品牌手机用户数较多
    • 女性对东信欧蓓、E.XUN、TCL品牌手机的偏好度较高;海尔、TCL、波导品牌手机用户数较多
    • 偏好度高低与用户数多少不成正比
    2.4.2.3 不同年龄段的用户对手机品牌的偏好TOP10

    比如:
    目标群体中具有某一特征的群体所占比例:【喜欢X品牌手机】的【XX后】/【XX后】
    总体中具有相同特征的群体所占比例:【喜欢X品牌的人数】/ 【总人数】
    TGI:(【喜欢X品牌手机】的【95后】/【95后】)/ 【喜欢X品牌的人数】/ 【总人数】 * 100


    根据年龄段和手机品牌进行分组统计。
    在这里插入图片描述
    各年龄段的总人数。
    在这里插入图片描述
    在这里插入图片描述
    喜欢不同手机品牌的人数。
    在这里插入图片描述
    在这里插入图片描述
    计算TGI。
    在这里插入图片描述

    2.4.2.3.1 20岁及以下(95后)对手机品牌的偏好TOP10

    在这里插入图片描述

    2.4.2.3.2 90后/85后…/70前对手机品牌的偏好TOP10

    代码与上述是一致的,这里就不再列出。

    2.4.2.3.3 作图并小结

    在这里插入图片描述
    小结:

    • 95后对’贝多芬’, ‘恒宇丰’, '金立’品牌手机的偏好度较高;
    • 90后对’首信’, ‘派信’, '威铂’品牌手机的偏好度较高;
    • 85后对’世纪天元’, ‘HTC’, 'E.XUN’品牌手机的偏好度较高;
    • 80后对’OPPO’, ‘HANMAC’, '福中福’品牌手机的偏好度较高;
    • 75后对’LOVME’, ‘传奇’, '金国威’品牌手机的偏好度较高;
    • 70后对’中维恒泰’, ‘奥克斯’, '聆韵’品牌手机的偏好度较高;
    • 70前对’SOSMART’, ‘迪士尼’, '创维’品牌手机的偏好度较高;
    • 偏好度高低与用户数多少不成正比。
    2.4.2.4 不同地区的用户对手机品牌的偏好TOP10

    比如:
    目标群体中具有某一特征的群体所占比例:【喜欢X品牌手机】的【A地区人数】/【A地区人数】
    总体中具有相同特征的群体所占比例:【喜欢X品牌的人数】/ 【总人数】
    TGI:(【喜欢X品牌手机】的【A地区人数】/【A地区人数】)/ 【喜欢X品牌的人数】/ 【总人数】 * 100


    根据地区和手机品牌进行分组统计。
    在这里插入图片描述
    统计各地区总人数。
    在这里插入图片描述
    喜欢X手机品牌的人数。
    在这里插入图片描述
    计算TGI。
    在这里插入图片描述

    2.4.2.4.1 东北地区对手机品牌的偏好TOP10

    在这里插入图片描述

    2.4.2.4.2 华北…等地区对手机品牌的偏好TOP10

    代码与上述是一致的,这里就不再列出。

    2.4.2.4.3 作图并小结

    在这里插入图片描述

    • 东北地区对’唐为’, ‘首信’, '金国威’品牌手机的偏好度较高;
    • 中南地区对’NUU’, ‘金立’, 'SOSMART’品牌手机的偏好度较高;
    • 华东地区对’福中福’, ‘欧奇’, '金圣达’品牌手机的偏好度较高;
    • 华北地区对’小米’, ‘E.XUN’, '誉品’品牌手机的偏好度较高;
    • 华南地区对’东信欧蓓’, ‘传奇’, '天语’品牌手机的偏好度较高;
    • 西北地区对’丰讯达’, ‘恒宇丰’, '贝尔丰’品牌手机的偏好度较高;
    • 西南地区对’天语’, ‘易百年’, '威铂’品牌手机的偏好度较高;
    • 偏好度高低与用户数多少不成正比。
    2.4.2.5 不同城市级别的用户对手机品牌的偏好TOP10

    比如:
    目标群体中具有某一特征的群体所占比例:【喜欢X品牌手机】的【A城市级别人数】/【A城市级别人数】
    总体中具有相同特征的群体所占比例:【喜欢X品牌的人数】/ 【总人数】
    TGI:(【喜欢X品牌手机】的【A城市级别人数】/【A城市级别人数】)/ 【喜欢X品牌的人数】/ 【总人数】 * 100


    根据城市和手机品牌进行分组统计。
    在这里插入图片描述

    对城市进行级别划分。
    在这里插入图片描述
    按照city_level和title进行分组统计,并统计各城市级别的人数。
    在这里插入图片描述
    在这里插入图片描述
    喜欢不同手机品牌的人数。
    在这里插入图片描述
    在这里插入图片描述
    计算TGI。
    在这里插入图片描述

    2.4.2.5.1 一线城市对手机品牌的偏好TOP10

    在这里插入图片描述

    2.4.2.5.2 二线…等城市级别对手机品牌的偏好TOP10

    代码与上述是一致的,这里就不再列出。

    2.4.2.5.3 作图并小结

    在这里插入图片描述
    小结:

    • 一线城市对’vivo’, ‘派信’, 'E.XUN’品牌手机的偏好度较高;
    • 新一线城市对’HANMAC’, ‘唐为’, '纽曼’品牌手机的偏好度较高;
    • 二线城市对’大Q手机’, ‘唐为’, '东信欧蓓’品牌手机的偏好度较高;
    • 三线城市对’摩托罗拉’, ‘荣耀’, '天语’品牌手机的偏好度较高;
    • 四线城市对’SUGAR’, ‘夏朗’, '贝尔丰’品牌手机的偏好度较高;
    • 五线城市对’贝多芬’, ‘东信欧蓓’, '小米’品牌手机的偏好度较高;
    • 偏好度高低与用户数多少不成正比

    2.4.3 RFM模型

    由于df4把同一用户购买同品牌手机进行了去重,在构建RFM模型的时候是可以同一用户多次购买同款手机的,所以重新导入数据。


    这里需要使用order_date数据进行分析,是为了求R(最近一次购买时间)。
    在这里插入图片描述

    2.4.3.1 计算最近一次购买时间R
    • 时间间隔是从2018年3月1日-2018年6月9日,这里选取2018年6月10日作为计算日期
    • 统计客户最近发生购买行为的时间距离2018年6月10日间隔几天
    • 再对间隔天数进行排名,间隔天数越小,排名越靠前。

    按客户分组,获取最近购买时间。
    在这里插入图片描述
    获取间隔天数。将order_date转为日期类型,与目标日期相减,通过.days获取间隔天数。
    在这里插入图片描述
    .rank(ascending=True, method=‘dense’) 默认升序排名,dense表示组间内加1,即数值不同加1。
    在这里插入图片描述

    2.4.3.2 计算购买频次F

    统计每个用户的购买次数,再对购买次数进行排名。购买次数越多,排名越靠前。
    在这里插入图片描述

    2.4.3.3 计算购买金额M

    统计每个用户的购买金额总数,进行排名。购买金额越大,排名越靠前。
    在这里插入图片描述

    2.4.3.4 RFM用户分类

    把r_buy,f_buy,m_buy进行连接。
    在这里插入图片描述
    对10075名用户进行打分,排名在前1/4的用户打4分,1/4到2/4的用户打3分,2/4到3/4的用户打2分,剩余的1/4打1分。

    分别按照排名的最大值进行4等份。
    在这里插入图片描述
    抽取函数。
    在这里插入图片描述
    进行打分。
    在这里插入图片描述

    2.4.3.4.1 给用户贴标签
    • 方式1:
      根据需求配备rfm的权重来贴标签
      比如r:f:m = 3:2:1,表示r_score>3,f_score>2,m_score>1 即为重要价值用户

    • 方式2:
      根据均值来贴标签
      比如r_score>r.score.mean(),f_score>f.score.mean(),m_score>f.score.mean() 即为重要价值用户

    由于我们没有特定的业务场景,这里使用的是方式2。
    在这里插入图片描述

    2.4.3.4.2 分为8个标签
    • 重要价值用户:r高 f高 m高(111)
    • 重要唤回用户:r低 f高 m高(011)
    • 重要深耕用户:r高 f低 m高(101)
    • 重要挽回用户:r低 f低 m高(001)
    • 潜力用户:r高 f高 m低(110)
    • 新用户:r高 f低 m低(100)
    • 一般维持用户:r低 f高 m低(010)
    • 流失用户:r低 f低 m低(000)
      在这里插入图片描述
      在这里插入图片描述
    2.4.3.4.3 不同用户类型的人数

    在这里插入图片描述

    3.总结

    在实际工作中,仅仅使用以上的分析是不够的。因为上述的分析主要是分享技术层面上是如何实现,都是属于描述性的分析。

    在实际业务中,如果你的分析仅仅只是说一些描述性的结论,业务的同事可能就会跟你说,这个结论我早就知道了。

    那好,我再加个RFM模型,告诉业务的同事哪些用户是有价值的用户,哪些用户是流失的用户。业务的同事就问,那咋让这些用户买?

    那问题出在哪?这个案例中,我统计了一个男女占比,那这个男女占比是不是个关键问题?

    我们对这个数字无法判断的原因是因为没有一个具体的业务场景,所以我们在做具体的分析前,要跟业务的同事多沟通,多刨根问底。

    展开全文
  • 如何构建电商用户画像

    千次阅读 2018-09-17 13:51:27
    5.1 构建电商用户画像技术和流程 构建一个用户画像,包括数据源端数据收集、数据预处理、行为建模、构建用户画像 有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到! 5.2 源数据分析 用户数据...

    5.1 构建电商用户画像技术和流程

    构建一个用户画像,包括数据源端数据收集、数据预处理、行为建模、构建用户画像

    有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到!

    5.2 源数据分析

    用户数据分为2类:动态信息数据、静态信息数据

    静态信息数据来源:

    Ø 用户填写的个人资料,或者由此通过一定的算法,计算出来的数据

    Ø 如果有不确定的,可以建立模型来判断,比如用户的性别注册没有填写,可以建立模型,根据用户的行为来判断用户性别是什么,或者它的概率

    动态信息数据来源:

    Ø 用户行为产生的数据:注册、游览、点击、购买、签收、评价、收藏等等。

    Ø 用户比较重要的行为数据:游览商品,收藏商品、加入购物车、关注商品

    根据这些行为特性可以计算出:用户注册时间、首单时间、潮妈族、纠结商品、最大消费、订单数量、退货数量、败家指数、品牌偏好等等。

    5.3 目标分析

    用户画像的目标是通过分析用户行为,最终为每个用户打上标签,以及该标签的权重。

    如,红酒 0.8、李宁 0.6。

    标签:表现了内容,用户对该内容有兴趣、偏好、需求等等。

    权重:表现了指数,用户的兴趣、偏好指数,也可能表现用户的需求度,可以简单的理解为可信度,概率。

    5.4 用户画像建模5.4.1 用户基本属性表

    根据用户所填写的属性标签和推算出来的标签。用于了解用户的人口属性的基本情况和按不同属性维度统计。

    作用:按人口属性营销、比如营销80后,对金牛座的优惠,生日营销。

    主要数据来源:用户表、用户调查表、孕妇模型表、马甲模型表。

    用户表:记录用户最基本的属性特性。

    用户调查表:补充用户的其他基本信息。

    用户所填写的基本信息:用户ID、用户名、密码、性别、手机号、邮箱、年龄、户籍省份、身份证编号、注册时间、收货地址等

    用户所填信息计算得到的指标:

    生日、星座、城市等级、手机前几位、手机运营商、邮件运营商

    用户调查表得到:学历、收入、职业、婚姻、是否有小孩、是否有车有房、使用手机品牌。

    根据算法得到:

    身高、体重、性别模型、孩子性别概率、潜在汽车用户概率、是否孕妇、孩子年龄概率、手机品牌、更换手机频率、是否有小孩,是否有车,使用手机档次,疑似马甲标准、疑似马甲账号数、用户忠诚度、用户购物类型。

    模型算法---性别模型

    Ø 用户自己也填写了性别,但仍然要用算法算一次性别

    用户性别

    1男 0女 -1未识别

    1、商品性别得分

    2、用户购买上述商品计算用户性别等得分

    3、最优化算法训练阀值,根据阀值判断

    孩子性别

    0 仅有男孩

    1仅有女孩

    2男女都有

    3无法识别

    1、选择男孩女孩商品

    2、确定用户购买商品的男女性别比例

    3、训练阀值,判断孩子性别,同用户性别类似

    Ø 性别验证方法

    随机抽样几千条数据让客户打电话确认。

    与用户自己填的性别做对比,确认百分比。

    模型算法---用户汽车模型

    用户是否有车

    1有 0 没有

    -1 未识别

    根据用户购买车相关产品

    判断用户是否有车

    潜在汽车用户

    1有

    -1 未识别

    用户游览或者搜索汽车

    用户数据判断

    模型算法---用户忠诚度模型

    Ø 忠诚度越高的用户越多,对网站的发展越有利

    用户忠诚度

    1忠诚型用户

    2偶尔型用户

    3投资型用户

    4游览型用户

    -1未识别

    总体规则是判断+聚类算法

    1、游览用户型:只游览不购买的

    2、购买天数大于一定天数的为忠诚用户

    3、购买天数小于一定天数,大部分是有优惠才购买的

    4、其他类型根据购买天数,购买最后一次距今时间,购买金额进行聚类

    模型算法---用户身高尺码模型

    男性用户身高尺码

    xxx-xxx身高段,-1未识别

    用户购买服装鞋帽等用户判断

    男性身材

    1偏瘦、2标准、3偏胖4肥胖、-1未识别

    用户购买服装鞋帽等用户判断

    女性用户身高尺码

    xxx-xxx身高段,-1未识别

    用户购买服装鞋帽等用户判断

    女性身材

    1偏瘦、2标准、3偏胖4肥胖、-1未识别

    用户购买服装鞋帽等用户判断

    模型算法---用户马甲标志模型

    Ø 马甲是指一个用户注册多个账号

    Ø 多次访问地址相同的用户账号是同一个人所有

    Ø 同一台手机登陆多次的用户是同一个人所有

    Ø 收货手机号相同的账号同一个人所有

    模型算法---手机相关标签模型

    Ø 对于手机营销参考意义比较大

    Ø 使用手机品牌: 最常用手机直接得到

    Ø 使用手机品牌档次:根据档次维表

    Ø 使用多少种不同的手机:手机登陆情况

    Ø 更换手机频率(月份):按时间段看手机登陆情况

    5.4.2 客户消费订单表

    根据客户消费的情况提取的客户标签,用于了解用户的消费总体情况,

    最终的目的根据用户消费习惯与消费能力做营销。

    主要数据来源:订单表、退货表、用户表、购物车表

    订单表可以得到相关标签:

    第一次消费时间、

    最近一次消费时间、

    首单距今时间、

    尾单距今时间------分析用户什么时候来购买商品以及多久没有购买了。

    最小消费金额、

    最大消费金额、

    累计消费次数(不含退拒)、

    累计消费金额(不含退拒)、

    累计使用代金券金额、

    累计使用代金券次数。-----分析用户总体消费情况。

         客单价(含退拒)、

         近60天客单价(含退拒)-----分析用户消费水平。

         常用收货地址、

         常用支付方式----分析用户常用的消费属性,方便做定向营销。

    退货表可以得到相关标签:

    近30天购买次数(不含退拒)、

    近30天购买金额(不含退拒)

    近30天购买次数(含退拒)、

    近30天购买金额(含退拒)----分析用户最近的消费能力。

    退货商品数量、

    退货商品金额、

    拒收商品数量、

    拒收商品金额、

    最近一次退货时间-----分析用户拒收和退货习惯。

    购物车表可以得到相关标签:

    最近30天购物车次数、

    最近30天购物车商品件数、

    最近30天购物车提交商品件数、

    最近30天购物车放弃件数、

    最近30天购物车成功率------分析用户购物车使用习惯

    订单表和用户表可以得到相关标签:

    学校下单总数、

    单位下单总数、

    家里下单总数、

    上午下单总数、

    下午下单总数、

    晚上下单总数----分析用户购物时间与地点习惯。

    5.4.3 客户购买类目表

    根据客户购买类目的情况提取客户标签,用于了解类目的购买人群情况和针对某一类目的营销等。

    主要数据来源:订单表、购物车表、类目维表

    类目维表可以得到相关标签:

    一级分类ID、

    一级分类名称、

    二级分类ID、

    二级分类名称、

    三级分类ID、

    三级分类名称-----分析用户都购买了哪些类目。

    电商的三级类目:

    京东商城:

    淘宝:

    订单表和类目维表可以得到相关标签:

    近30天购买类目次数、

    近30天购买类目金额、

    近90天购买类目次数、

    近90天购买类目金额、

    近180天购买类目次数、

    近180天购买类目金额、

    累计购买类目次数、

    累计购买类目金额----分析用户最近都购买了哪些类目。

    最近一次购买类目时间、

    最后一次购买类目距今天数----分析用户多久没有购买这个类目。

    购物车表和类目维表可以得到相关标签:

    近30天购物车类目次数、

    近30天购物车类目金额、

    近90天购物车类目次数、

    近90天购物车类目金额----分析用户最近都挑中哪些类目。

    5.4.4 用户访问信息表

    根据客户访问的情况提取相关客户标签。

    用于了解用户的访问总体情况,方便根据客户游览习惯做营销

    主要数据来源:点击流日志行为表(PC/APP端)

    点击流日志行为表可以得到相关标签:

    最近一次APP/PC端访问日期、

    最近一次APP/PC端访问使用操作系统、

    最近一次APP/PC端访问使用游览器、

    最近一次访问IP地址、

    最近一次访问城市、

    最近一次访问的省份-----分析用户最近一次访问情况。

    第一次APP/PC端访问日期、

    第一次APP/PC端访问使用操作系统、

    第一次APP/PC端访问使用游览器、

    第一次访问IP地址、

    第一次访问城市、

    第一次访问的省份-----分析用户第一次访问情况。

    近7天APP/PC端访问次数、

    近30天APP/PC访问次数、

    近60天APP/PC端访问次数、

    近90天APP/PC端访问次数、

    近180天APP/PC端访问次数、

    近365天APP/PC端访问次数----分析用户APP/PC端访问次数。

    近30天PC/APP端访问天数、

    近30天PC/APP端访问并购买次数、

    近30天PC/APP端访问PV、

    近30天PC/APP端访问平均PV、

    近30天PC/APP端最常用的游览器、

    近30天PC/APP端不同IP数、

    近30天PC/APP端最常用IP-----分析用户访问详情。

    近30天0-5点访问的次数、

    近30天6-7点访问的次数、

    近30天8-9点访问的次数、

    近30天10-12点访问的次数、

    近30天13-14点访问的次数、

    近30天15-17点访问的次数、

    近30天18-19点访问的次数、

    近30天20-21点访问的次数、

    近30天22-23点访问的次数----分析用户喜欢在哪个时间上网访问。

    展开全文
  • Flink+ClickHouse构建亿级电商用户画像平台(PC、移动、小程序)教程分享,2020年10月录制,完整版131节,附源码和课件;本课程采用Flink+ClickHouse技术架构实现我们的画像系统,通过学习完本课程可以节省你摸索的...
  • 基于电商评价数据的农产品用户画像分析——以安化黑茶为例.pdf
  • 电商用户画像

    万次阅读 2018-04-27 03:28:56
    本课程是基于大型电商公司的真实用户画像中提练出的精华内容,旨在培养学员了解用户画像的内容,掌握构建用户画像的方法。二、 初识用户画像 右边是一个人的基本属性,通过一个人的基本属性我们可以了解...
  • 产品书籍每本阅读记录日志,第一本:用户画像:方法论与工程化解决方案 用户画像简介: 也叫用户角色,即用户信息标签化,通过收集用户的各个维度的数据,进而对用户或者产品特征属性进行刻画,并将用户相关数据...
  • JD电商用户画像总结

    千次阅读 2019-03-04 17:01:35
    https://blog.csdn.net/tswisdom/article/details/79871265 course_link:https://www.imooc.com/learn/460
  • 电商数据分析用户画像的构成

    千次阅读 2020-11-26 10:00:00
    1、用户画像之基本属性谈到用户画像,首当其冲的就是需要了解我们的用户基础属性。用来定位我们的商品受众群体,以便于我们去拉新、广告投放等方式更好的获取精准客户,也可以分析我们上新品时的受众...
  • 用户唯一标识是整个用户画像的核心,方便跟踪和分析一个用户的特征。 设计唯一标识的选择:用户名、注册手机号、联系人手机号、邮箱、设备号、CookieID等。 第二步:给用户打标签,即用户画像 用户消费行为分析,...
  • 该项目是基于于flink的电商用户行为数据分析的flink项目,模块划为为:从项目介绍与代码框架、实时热门商品统计、替换kafka源、实时流量统计、恶意登录检测、恶意登录监控CEP实现、订单支付监控CEP实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,095
精华内容 3,638
关键字:

电商用户画像分析