淘宝用户行为分析

本次分析的问题以及分析逻辑
1、基于AARRR漏斗模型,使用常见的电商分析指标,从新增用户数量、各环节转化率、新增用户留存率进行分析,确定影响新增用户数量的因素,找到需要改进的环节,发现留存现存问题
2、研究用户在不同时间尺度下的行为规律,找到用户在不同时间周期下的活跃规律
3、找出最具核心付费用户群,对这部分的用户进行分析。
4、找到用户对于不同商品的偏好,指定对不同商品的营销策略。

1、数据源

来源:阿里云天池数据源记录数(经过处理后)研究的时间范围
https://tianchi.aliyun.com1001508072017.11.25~2017.12.03

2、使用模型

AAARR模型

3、分析思路

3.1 AAARR模型

获客 每日新增用户数 转化 各环节转化率分析 留存 次日留存、三日留存、7日留存 变现 复购次数、复购率:4.17%

3.1.1每日新增的用户

date新增的数量
2017-11-26159329
2017-11-2764516
2017-11-2831587
2017-11-2918028
2017-11-309369
2017-12-01585
2017-12-0285
2017-12-037

 

新增用户情况
2017/11/26至2017/12/3,每天都有新增的用户,但是新增的用户在递减。

3.1.2 各环节转化率分析

UV987976
pv67108664
跳失用户数量868
跳转失率99.91%
behavior用户独立访客人数
pv983994
fav_cart831025
buy409322
behavior用户行为数量
pv67108664
fav_cart6996320
buy764599

用户独立访客分析
APP的付费用户=409322/983994=41.5%.
APP约有41.5的付费用户,用户付费转化率相当高,应将经营重心转化为培养用的忠诚度上,鼓励用户高频次消费。

用户行为分析    
从上图中可以看出确定有购物意向的只有9%的转化率,在
点击到收藏加购这一过程中,可能原因是用户花费大量的时间寻找合适的产品,可以针对性的优化平台的筛选功能,让用户更容易找到合适的产品。

 3.1.3 留存

date次日留存率第三日留存率第七日留存率
2017-11-2663.70%62.85%89.74%
2017-11-2759.85%60.35%83.47%
2017-11-2859.51%61.65%0
2017-11-2966.56%70.01%0
2017-11-3085.71%87.07%0
2017-12-0184.96%77.95%0
2017-12-0268.24%00
留存:新用户留存情况
在26号、27号,留存率存在上升的趋势。三种类型的留存率均维持在60%以上,表现非常优秀的.11-30、12-01较的留存率相较之前有大约20%的上涨。故促销活动能为提升留存率带来一定的正面影响

# 计算每日新增的用户
'''
假设11-25号为基础的用户数量。(需要去重统计,可以用集合去重),设置为基础用户id列表
当计算11-26号的用户新增数量的时候,统计11-26号出现的用户id,当11-26号出现的用户id,11-25号没有出现时为11-26号的新增加的用户。
并将新增的用户加入到基础用户id列表。
当计算11-27号新增用户数量的时候。去匹配基础用户id列表。不在基础用户id列表列表的为新增的用户。
'''
# 统计2017-11-25号的所有用户,和数量。(记得为去重统计)
df_data_11_25_userid_qc = list(set(df_data[df_data['dates'] == '2017-11-25']['user_id']))
userid_11_25_sl = len(df_data_11_25_userid_qc)
logger.info('11-25基础用户数量:{}'.format(userid_11_25_sl))

date_nyr_list = list(set(df_data['dates']))
date_nyr_list.remove('2017-11-25')
date_nyr_list.sort(reverse = False)
# 新增加的用户数量
df_data_i_userid_qc_xzj_all = 0
# 新增用户的列表
data_i_userid_qc_xzj_lb = []
# 新增次日留存率列表。
data_i_userid_qc_xzj_lc_i_1_lc_rate_all = []
for i in date_nyr_list:
    # i号的所有用户,和新增加的用户。以及新增加的数量。
    # i号的所有用户。(已去重)
    df_data_i_userid_qc = list(set(df_data[df_data['dates'] == i]['user_id']))
    # 11-25号与i号都有的用户。
    df_data_i_userid_11_25 = set(df_data_11_25_userid_qc) & set(df_data_i_userid_qc)
    # i号新增加的用户数量。
    userid_i_xzj_sl = len(df_data_i_userid_qc) - len(df_data_i_userid_11_25)
    # i号新增加的用户列表。
    df_data_i_userid_qc_xzj = list(set(df_data_i_userid_qc) - set(df_data_i_userid_11_25))
    # 基础用户数量为前一天的用户数量。
    logger.info('{}基础用户数量:{}'.format(i, len(df_data_11_25_userid_qc)))
    # 将新增加的用户加入基础用户的列表中。(11-25号的用户列表)
    df_data_11_25_userid_qc.extend(df_data_i_userid_qc_xzj)
    logger.info('{}新增加的用户数量:{}'.format(i, userid_i_xzj_sl))
    df_data_i_userid_qc_xzj_all += userid_i_xzj_sl
    # 向新增用户(df_data_i_userid_qc_xzj_zd)中添加元素。
    # i日新增加的用户数量
    i_userid_qc_xzj_sl = []
    i_userid_qc_xzj_sl.append(i)
    i_userid_qc_xzj_sl.append(userid_i_xzj_sl)
    data_i_userid_qc_xzj_lb.append(i_userid_qc_xzj_sl)
    if i != '2017-11-25' and i != '2017-12-03':
        # 次日的时间
        date_cr = datetime.date(*map(int, i.split('-'))) + datetime.timedelta(days=1)
        date_cr = date_cr.strftime('%Y-%m-%d')
        logger.info('i的类型{},date_cr的类型{}'.format(type(i), type(date_cr)))
        # 次日的用户集合
        df_data_i_cr_userid_qc = list(set(df_data[df_data['dates'] == date_cr]['user_id']))
        logger.info('次日的用户数量:{}'.format(len(df_data_i_cr_userid_qc)))
        # i号新增加的用户在i + 1号的留存用户。
        df_data_i_userid_qc_xzj_lc_i_1 = set(df_data_i_userid_qc_xzj) & set(df_data_i_cr_userid_qc)
        # i号新增加的用户在i+1号的留存用户数量。
        df_data_i_userid_qc_xzj_lc_i_1_sl = len(df_data_i_userid_qc_xzj_lc_i_1)
        logger.info('{}号新增加的用户在{}号的留存用户数量:{}'.format(i, date_cr, df_data_i_userid_qc_xzj_lc_i_1_sl))
        # i号新增加的用户在i+1号的留存率。(即次日留存率)
        df_data_i_userid_qc_xzj_lc_i_1_lc_rate = '%.2f%%' % ((df_data_i_userid_qc_xzj_lc_i_1_sl/userid_i_xzj_sl) * 100)
        logger.info('{}号新增加的用户的次日留存率:{}'.format(i, df_data_i_userid_qc_xzj_lc_i_1_lc_rate))
        '''
         # i号的次日留存率
        '''
        date_i_xzj_userid_qc__lc_i_1_rate_lb = []
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(i)
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(df_data_i_userid_qc_xzj_lc_i_1_lc_rate)
        data_i_userid_qc_xzj_lc_i_1_lc_rate_all.append(date_i_xzj_userid_qc__lc_i_1_rate_lb)

# 创建新增用户的dataframe
df_userid_xzj = pd.DataFrame(data_i_userid_qc_xzj_lb, columns = ['date', '新增的数量'])
logger.info('新增加的用户的datafraame:{}'.format(df_userid_xzj))
df_userid_xzj.to_excel(file + '每日新增用户数量.xls', index = False)
# 创建新增用户次日留存率dataframe
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all = pd.DataFrame(data_i_userid_qc_xzj_lc_i_1_lc_rate_all, columns=['date', '次日留存率'])
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all.to_excel(file + '新增用户的次日留存率.xls', index = False)
# 期间所有的用户
df_data_userid_qc = list(set(df_data['user_id']))
logger.info('11-26号到12-02号总共增加的用户数量:{}'.format(df_data_i_userid_qc_xzj_all))
logger.info('期间所有的用户数量:{}'.format(len(df_data_userid_qc)))

 

# 计算每日新增的用户
'''
假设11-25号为基础的用户数量。(需要去重统计,可以用集合去重),设置为基础用户id列表
当计算11-26号的用户新增数量的时候,统计11-26号出现的用户id,当11-26号出现的用户id,11-25号没有出现时为11-26号的新增加的用户。
并将新增的用户加入到基础用户id列表。
当计算11-27号新增用户数量的时候。去匹配基础用户id列表。不在基础用户id列表列表的为新增的用户。
'''
# 统计2017-11-25号的所有用户,和数量。(记得为去重统计)
df_data_11_25_userid_qc = list(set(df_data[df_data['dates'] == '2017-11-25']['user_id']))
userid_11_25_sl = len(df_data_11_25_userid_qc)
logger.info('11-25基础用户数量:{}'.format(userid_11_25_sl))

date_nyr_list = list(set(df_data['dates']))
date_nyr_list.remove('2017-11-25')
date_nyr_list.sort(reverse = False)
# 新增用户的列表
data_i_userid_qc_xzj_lb = []
# 新增第三日留存率列表。
data_i_userid_qc_xzj_lc_i_1_lc_rate_all = []
for i in date_nyr_list:
    # i号的所有用户,和新增加的用户。以及新增加的数量。
    # i号的所有用户。(已去重)
    df_data_i_userid_qc = list(set(df_data[df_data['dates'] == i]['user_id']))
    # 11-25号与i号都有的用户。
    df_data_i_userid_11_25 = set(df_data_11_25_userid_qc) & set(df_data_i_userid_qc)
    # i号新增加的用户数量。
    userid_i_xzj_sl = len(df_data_i_userid_qc) - len(df_data_i_userid_11_25)
    # i号新增加的用户列表。
    df_data_i_userid_qc_xzj = list(set(df_data_i_userid_qc) - set(df_data_i_userid_11_25))
    # 基础用户数量为前一天的用户数量。
    logger.info('{}基础用户数量:{}'.format(i, len(df_data_11_25_userid_qc)))
    # 将新增加的用户加入基础用户的列表中。(11-25号的用户列表)
    df_data_11_25_userid_qc.extend(df_data_i_userid_qc_xzj)
    logger.info('{}新增加的用户数量:{}'.format(i, userid_i_xzj_sl))
    if i != '2017-11-25' and i != '2017-12-03' and i != '2017-12-02':
        # 第三日的时间
        date_cr = datetime.date(*map(int, i.split('-'))) + datetime.timedelta(days=2)
        date_cr = date_cr.strftime('%Y-%m-%d')
        # 第三日的用户集合
        df_data_i_cr_userid_qc = list(set(df_data[df_data['dates'] == date_cr]['user_id']))
        logger.info('第三日的用户数量:{}'.format(len(df_data_i_cr_userid_qc)))
        # i号新增加的用户在i + 2号的留存用户。
        df_data_i_userid_qc_xzj_lc_i_1 = set(df_data_i_userid_qc_xzj) & set(df_data_i_cr_userid_qc)
        # i号新增加的用户在i+2号的留存用户数量。
        df_data_i_userid_qc_xzj_lc_i_1_sl = len(df_data_i_userid_qc_xzj_lc_i_1)
        logger.info('{}号新增加的用户在{}号的留存用户数量:{}'.format(i, date_cr, df_data_i_userid_qc_xzj_lc_i_1_sl))
        # i号新增加的用户在i+2号的留存率。(即第三日留存率)
        df_data_i_userid_qc_xzj_lc_i_1_lc_rate = '%.2f%%' % ((df_data_i_userid_qc_xzj_lc_i_1_sl/userid_i_xzj_sl) * 100)
        logger.info('{}号新增加的用户的第三日留存率:{}'.format(i, df_data_i_userid_qc_xzj_lc_i_1_lc_rate))
        '''
         # i号的第三日留存率
        '''
        date_i_xzj_userid_qc__lc_i_1_rate_lb = []
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(i)
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(df_data_i_userid_qc_xzj_lc_i_1_lc_rate)
        data_i_userid_qc_xzj_lc_i_1_lc_rate_all.append(date_i_xzj_userid_qc__lc_i_1_rate_lb)

# 创建新增用户次日留存率dataframe
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all = pd.DataFrame(data_i_userid_qc_xzj_lc_i_1_lc_rate_all, columns=['date', '第三日留存率'])
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all.to_excel(file + '新增用户的第三日留存率.xls', index = False)
print(df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all)
# 计算每日新增的用户
'''
假设11-25号为基础的用户数量。(需要去重统计,可以用集合去重),设置为基础用户id列表
当计算11-26号的用户新增数量的时候,统计11-26号出现的用户id,当11-26号出现的用户id,11-25号没有出现时为11-26号的新增加的用户。
并将新增的用户加入到基础用户id列表。
当计算11-27号新增用户数量的时候。去匹配基础用户id列表。不在基础用户id列表列表的为新增的用户。
'''
# 统计2017-11-25号的所有用户,和数量。(记得为去重统计)
df_data_11_25_userid_qc = list(set(df_data[df_data['dates'] == '2017-11-25']['user_id']))
userid_11_25_sl = len(df_data_11_25_userid_qc)
logger.info('11-25基础用户数量:{}'.format(userid_11_25_sl))

date_nyr_list = list(set(df_data['dates']))
date_nyr_list.remove('2017-11-25')
date_nyr_list.sort(reverse = False)
# 新增用户的列表
data_i_userid_qc_xzj_lb = []
# 新增第七日留存率列表。
data_i_userid_qc_xzj_lc_i_1_lc_rate_all = []
for i in date_nyr_list:
    # i号的所有用户,和新增加的用户。以及新增加的数量。
    # i号的所有用户。(已去重)
    df_data_i_userid_qc = list(set(df_data[df_data['dates'] == i]['user_id']))
    # 11-25号与i号都有的用户。
    df_data_i_userid_11_25 = set(df_data_11_25_userid_qc) & set(df_data_i_userid_qc)
    # i号新增加的用户数量。
    userid_i_xzj_sl = len(df_data_i_userid_qc) - len(df_data_i_userid_11_25)
    # i号新增加的用户列表。
    df_data_i_userid_qc_xzj = list(set(df_data_i_userid_qc) - set(df_data_i_userid_11_25))
    # 基础用户数量为前一天的用户数量。
    logger.info('{}基础用户数量:{}'.format(i, len(df_data_11_25_userid_qc)))
    # 将新增加的用户加入基础用户的列表中。(11-25号的用户列表)
    df_data_11_25_userid_qc.extend(df_data_i_userid_qc_xzj)
    logger.info('{}新增加的用户数量:{}'.format(i, userid_i_xzj_sl))
    if i == '2017-11-26' or i == '2017-11-27':
        # 第七日的时间
        date_cr = datetime.date(*map(int, i.split('-'))) + datetime.timedelta(days=6)
        date_cr = date_cr.strftime('%Y-%m-%d')
        # 第三日的用户集合
        df_data_i_cr_userid_qc = list(set(df_data[df_data['dates'] == date_cr]['user_id']))
        logger.info('第七日的用户数量:{}'.format(len(df_data_i_cr_userid_qc)))
        # i号新增加的用户在i + 6号的留存用户。
        df_data_i_userid_qc_xzj_lc_i_1 = set(df_data_i_userid_qc_xzj) & set(df_data_i_cr_userid_qc)
        # i号新增加的用户在i+6号的留存用户数量。
        df_data_i_userid_qc_xzj_lc_i_1_sl = len(df_data_i_userid_qc_xzj_lc_i_1)
        logger.info('{}号新增加的用户在{}号的留存用户数量:{}'.format(i, date_cr, df_data_i_userid_qc_xzj_lc_i_1_sl))
        # i号新增加的用户在i+6号的留存率。(即第七日留存率)
        df_data_i_userid_qc_xzj_lc_i_1_lc_rate = '%.2f%%' % ((df_data_i_userid_qc_xzj_lc_i_1_sl/userid_i_xzj_sl) * 100)
        logger.info('{}号新增加的用户的第七日留存率:{}'.format(i, df_data_i_userid_qc_xzj_lc_i_1_lc_rate))
        '''
         # i号的第七日留存率
        '''
        date_i_xzj_userid_qc__lc_i_1_rate_lb = []
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(i)
        date_i_xzj_userid_qc__lc_i_1_rate_lb.append(df_data_i_userid_qc_xzj_lc_i_1_lc_rate)
        data_i_userid_qc_xzj_lc_i_1_lc_rate_all.append(date_i_xzj_userid_qc__lc_i_1_rate_lb)

# 创建新增用户次日留存率dataframe
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all = pd.DataFrame(data_i_userid_qc_xzj_lc_i_1_lc_rate_all, columns=['date', '第七日留存率'])
df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all.to_excel(file + '新增用户的第七日留存率.xls', index = False)
print(df_data_i_userid_qc_xzj_lc_i_1_lc_rate_all)

3.1.4变现

购买的次数用户数量累计用户数量累计用户数量占比购买次数>=i的用户数量总的用户数量占比
0578654578654987976987976100.00%
12367858154390.82536316740932298797641.43%
2942049096430.92071366117253798797617.46%
3393139489560.960505113783339879767.93%
4178179667730.978538952390209879763.95%
586749754470.987318518212039879762.15%
646699801160.992044341125299879760.0127
726439827590.99471950778609879760.80%
816169843750.99635517552179879760.53%
910009853750.99736734536019879760.36%
106339860080.99800804926019879760.26%
114539864610.99846656219689879760.20%
123099867700.99877932315159879760.15%
132499870190.99903135312069879760.12%
141659871840.9991983619579879760.10%
变现:复购分析
复购5此以上的用户数量占存在购买行为的用户数量的例:
(987976-975447)/(987976-578654)=3.06%
右图片展示了不同复购次数对应的用户数量,发现复购5次以上的用户仅占存在购买用户的3。06%,发现复购用户的次数很少,商家可以从商品展示、服务质量物流体验方面寻找原因,定位所在问题点,寻求高复购率的突破。

3.2 商品维度分析

商品销售情况 排名 商品类目 排名

3.2.1 商品的销售情况

销量前20的商品关注人数付费人数该款商品的付费率
355752237228877.42%
396458340572917.17%
421908735542486.98%
55518153728452.89%
31221352416120950.04%
426026168729442.79%
1034594103043642.33%
74094782123654.44%
172824175527436.29%
449942593433235.55%
1116492123543034.82%
70555778152553.26%
1910706171141023.96%
4443059123733242.62%
3031354132422972.24%
4438744128624619.13%
257772198628514.35%
3503155210126812.76%
1415828240325110.45%
1535294179332941.64%

 

商品的销售情况分析
1、浏览前20的商品销量也是前20的商品1535294
3031354
4443059
2、浏览前20的商品收藏也是前20的商品有812879
3845720
1535294
2032668
2331370
138964
2453685
2279428
2818406
1583704
3031354
4649427
3、加购前20的商品中也是销量前20的商品705557
740947
1535294
30313544443059
总结
1、浏览与购买存在相关性
2、浏览与收藏存在很强大的相关性
3、加购与购买存在相关性
4、加购与购买的相关性强于浏览与购买的相关性

# -*- coding:utf-8 -*-
import datetime
import os
import time
import pandas as pd
import logging
import os
from methods.logger_info import logger_info
import numpy as np
# logger_info方法实例话对象。
logger = logger_info()

logger.info('开始分析计算相关指标:{}'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
# 当前py文件的绝对路径
file = os.getcwd() + '/'
# 上一级文件夹的路径
file_s = os.path.abspath(os.path.join(os.getcwd(), "..")) + '/'
# 输出指定文件夹下的所有的文件名
namelist = os.listdir(file_s)
str1 = '清洗后的电商数据'
# 输出数据分析的文件名,为name
for i in namelist:
    # 当可以找到时间,不返回-1,则表明可以找到。
    if  i.find(str1) != -1:
        name = i
# 默认读取列标签
df_data = pd.read_csv(file_s + name)

'''
# 付费率 = 付费人数/浏览商品的总人数
'''
# 以商品为分组条件,统计每种商品的状态的数量。
# 三个字段,商品id,行为behavior。每个商品在该中行为的数量。
df_data_groupby_item_id_value_counts_behavior = df_data['behavior'].groupby(df_data['item_id']).agg(['value_counts']).reset_index()
# 统计销量前20 的商品。
df_data_groupby_item_id_behavior_buy_q20 = df_data_groupby_item_id_value_counts_behavior[df_data_groupby_item_id_value_counts_behavior['behavior'] == 'buy'].sort_values(by = 'value_counts', ascending = False).iloc[:20, :]
df_data_groupby_item_id_behavior_buy_q20.to_excel(file + '销量前20的商品.xls', index=False)
# 统计销量收藏前20 的商品。
df_data_groupby_item_id_behavior_fav_q20 = df_data_groupby_item_id_value_counts_behavior[df_data_groupby_item_id_value_counts_behavior['behavior'] == 'fav'].sort_values(by = 'value_counts', ascending = False).iloc[:20, :]
df_data_groupby_item_id_behavior_fav_q20.to_excel(file + '收藏前20的商品.xls', index=False)
# 统计销量加购前20 的商品。
df_data_groupby_item_id_behavior_cart_q20 = df_data_groupby_item_id_value_counts_behavior[df_data_groupby_item_id_value_counts_behavior['behavior'] == 'cart'].sort_values(by = 'value_counts', ascending = False).iloc[:20, :]
df_data_groupby_item_id_behavior_cart_q20.to_excel(file + '加购前20的商品.xls', index=False)
# 统计浏览前20的商品。
df_data_groupby_item_id_behavior_pv_q20 = df_data_groupby_item_id_value_counts_behavior[df_data_groupby_item_id_value_counts_behavior['behavior'] == 'pv'].sort_values(by = 'value_counts', ascending = False).iloc[:20, :]
df_data_groupby_item_id_behavior_pv_q20.to_excel(file + '浏览前20的商品.xls', index=False)

# 商品类目的销售情况
df_data_groupby_category_id_value_counts_behavior = df_data['behavior'].groupby(df_data['category_id']).agg(['value_counts']).reset_index()
# 统计销量前20 的商品。
df_data_groupby_category_id_behavior_buy_q20 = df_data_groupby_category_id_value_counts_behavior[df_data_groupby_category_id_value_counts_behavior['behavior'] == 'buy'].sort_values(by = 'value_counts', ascending = False).iloc[:20, :]
df_data_groupby_category_id_behavior_buy_q20.to_excel(file + '销量前20的商品类目.xls', index=False)

# 销量排名前20 的商品id。
df_data_groupby_item_id_behavior_buy_q20_item_id = list(set(df_data_groupby_item_id_behavior_buy_q20['item_id']))
# 销量排名前20 的商品的付费人数以及浏览人数。
# 双重筛选,取交集。
q20_ffl = []
logger.info('销量排名前20的商品有:{}'.format(df_data_groupby_item_id_behavior_buy_q20_item_id))
for i in df_data_groupby_item_id_behavior_buy_q20_item_id:
    q20_i_ffl = []
    q20_i_ffl.append(i)
    # 销量前20的商品中i商品de 消费人数。(已去重)
    item_id_behavior_buy_q20_userid_sl = len(list(set(df_data[(df_data['behavior'] == 'buy') & (df_data['item_id'] == i)]['user_id'])))
    logger.info('销量前20的商品中i商品de 消费人数:{}'.format(item_id_behavior_buy_q20_userid_sl))
    # 销量前20的商品中i商品de 关注人数。(已去重)
    item_id_behavior_q20_userid_sl = len(list(set(df_data[df_data['item_id'] == i]['user_id'])))
    logger.info('销量前20的商品中i商品de 关注人数:{}'.format(item_id_behavior_q20_userid_sl))
    # 商品i的付费率:表示为这款商品付费的人数/浏览这款商品的人数
    if item_id_behavior_q20_userid_sl != 0:
        item_id_i_ffl = '%.2f%%' % ((item_id_behavior_buy_q20_userid_sl/item_id_behavior_q20_userid_sl) * 100)
    else:
        item_id_i_ffl = 0
    logger.info('销量排名前20的商品中,商品{}的付费率为{}'.format(i, item_id_i_ffl))
    # 添加关注人数
    q20_i_ffl.append(item_id_behavior_q20_userid_sl)
    # 添加付费人数
    q20_i_ffl.append(item_id_behavior_buy_q20_userid_sl)
    # 添加付费率
    q20_i_ffl.append(item_id_i_ffl)
    q20_ffl.append(q20_i_ffl)
# 生成销量前20款商品的付费率文件
df_item_id_behavior_buy_q20_all_ffl = pd.DataFrame(q20_ffl,
                                                   columns = ['item_id', '关注人数', '付费人数', '该款商品的付费率']).sort_values(by = '该款商品的付费率', ascending = False)
df_item_id_behavior_buy_q20_all_ffl.to_excel(file + '销量前20的商品的付费率.xls', index = False)


'''
复购率
'''
# 付费人数,购买两次以上的人数。
# 付费人数
item_id_behavior_buy_sl = len(list(set(df_data[df_data['behavior'] == 'buy']['user_id'])))
# 后买两次以上的人数
df_data_groupby_item_id_value_counts_behavior = df_data['behavior'].groupby(df_data['user_id']).agg(['value_counts']).reset_index()
item_id_behavior_buy_dz2_sl = len(list(set(df_data_groupby_item_id_value_counts_behavior[(df_data_groupby_item_id_value_counts_behavior['behavior'] == 'buy')
                                                                                         & (df_data_groupby_item_id_value_counts_behavior['value_counts'] >= 2)]['user_id'])))
# 复购率:指的是消费两次以上的用户数量/付费人数
fgl = '%.2f%%' % ((item_id_behavior_buy_dz2_sl/item_id_behavior_buy_sl) * 100)
logger.info('复购率:{}'.format(fgl))

'''
# 变现:复购分析
'''
# 以user_id为分组的条件,去统计behavior为buy的个数。
# value_counts表示对该字段的统计函数以及生成列的名称
df_data_groupby_user_id_value_counts_behavior =  df_data['behavior'].groupby(df_data['user_id']).agg(['value_counts']).reset_index()
df_data_groupby_user_id_value_counts_behavior.columns = ['user_id', 'behavior', '该用户存在该中行为的次数']

# 筛选购买行为的所有记录
df_data_groupby_user_id_value_counts_behavior_buy = df_data_groupby_user_id_value_counts_behavior[df_data_groupby_user_id_value_counts_behavior['behavior'] == 'buy']
# 基于字段‘该用户存在该中行为的次数’的降序排序
df_data_groupby_user_id_value_counts_behavior_buy = df_data_groupby_user_id_value_counts_behavior_buy.sort_values(by = '该用户存在该中行为的次数', ascending=False)
# 购买次数排名前三的用户
logger.info('购买次数排名前三的用户:{} '.format(df_data_groupby_user_id_value_counts_behavior_buy.iloc[:3, :]))


# 产品的总的关注人数(去重)
item_id_sl = len(set(df_data['user_id']))
# 购买商品的人数(去重),即付费人数
# 统计购买次数为0次的用户数量
item_id_behavior_buy_0_item_id_sl = item_id_sl - item_id_behavior_buy_sl
logger.info("统计购买次数为0次的用户数量:{}".format(item_id_behavior_buy_0_item_id_sl))
# 累计用户数量
user_id_behavior_buy_i_user_id_ljsl = item_id_behavior_buy_0_item_id_sl
logger.info("统计购买次数为0的累计用户数量:{}".format(user_id_behavior_buy_i_user_id_ljsl))


# 最多的购买次数
user_id_behavior_buy_value_counts_max = np.array(df_data_groupby_user_id_value_counts_behavior[df_data_groupby_user_id_value_counts_behavior['behavior'] == 'buy']['该用户存在该中行为的次数']).max()
# 购买i次的用户数量
user_id_behavior_buy_value_counts_lb = [[0, item_id_behavior_buy_0_item_id_sl, user_id_behavior_buy_i_user_id_ljsl]]
for i in range(1,  user_id_behavior_buy_value_counts_max + 1):
    # 筛选字段behavior == 'buy'且字段该用户存在该中行为的次数 == i
    # 购买i次的用户。
    user_id_behavior_buy_i_value_counts_lb = []
    user_id_behavior_buy_i_value_counts_lb.append(i)
    user_id_behavior_buy_i_user_id = list(set(df_data_groupby_user_id_value_counts_behavior[(
                                                                                                        df_data_groupby_user_id_value_counts_behavior[
                                                                                                            'behavior'] == 'buy') & (
                                                                                                        df_data_groupby_user_id_value_counts_behavior[
                                                                                                            '该用户存在该中行为的次数'] == i)][
                                                  'user_id']))
    user_id_behavior_buy_i_user_id_sl = len(user_id_behavior_buy_i_user_id)
    logger.info('购买{}次的用户数量:{}'.format(i, user_id_behavior_buy_i_user_id_sl))
    user_id_behavior_buy_i_user_id_ljsl += user_id_behavior_buy_i_user_id_sl
    logger.info("统计购买次数小等于{}的累计用户数量:{}".format(i, user_id_behavior_buy_i_user_id_ljsl))
    # 累计用户数量占比
    user_id_behavior_buy_i_user_id_ljsl_rate = user_id_behavior_buy_i_user_id_ljsl/item_id_sl
    user_id_behavior_buy_i_value_counts_lb.append(user_id_behavior_buy_i_user_id_sl)
    user_id_behavior_buy_i_value_counts_lb.append(user_id_behavior_buy_i_user_id_ljsl)
    user_id_behavior_buy_i_value_counts_lb.append(user_id_behavior_buy_i_user_id_ljsl_rate)
    user_id_behavior_buy_value_counts_lb.append(user_id_behavior_buy_i_value_counts_lb)

df_user_id_behavior_buy_i_value_counts = pd.DataFrame(user_id_behavior_buy_value_counts_lb, columns=['购买的次数', '用户数量', '累计用户数量', '累计用户数量占比例'])

# 购买次数大于等于i de用户数量
user_id_behavior_buy_di_value_counts_lb_all = []
for i in range(0,  user_id_behavior_buy_value_counts_max + 1):
    user_id_behavior_buy_di_value_counts_lb = [i]
    # 购买次数大等于i次的用户的数量
    df_user_id_behavior_buy_di_value_counts = df_user_id_behavior_buy_i_value_counts[df_user_id_behavior_buy_i_value_counts['购买的次数'] >= i]['用户数量'].sum()
    # 购买次数大等于i次的用户的数量/总的用户数量
    df_user_id_behavior_buy_d5_value_counts_rate = '%.2f%%' % ((df_user_id_behavior_buy_di_value_counts/item_id_sl) * 100)
    user_id_behavior_buy_di_value_counts_lb.append(df_user_id_behavior_buy_di_value_counts)
    user_id_behavior_buy_di_value_counts_lb.append(item_id_sl)
    user_id_behavior_buy_di_value_counts_lb.append(df_user_id_behavior_buy_d5_value_counts_rate)
    user_id_behavior_buy_di_value_counts_lb_all.append(user_id_behavior_buy_di_value_counts_lb)

df_user_id_behavior_buy_di_value_counts_lb_all = pd.DataFrame(user_id_behavior_buy_di_value_counts_lb_all,
                                                              columns=['购买次数i', '购买次数>=i的用户数量', '总的用户数量', '占比'])

# 生成复购分析文件
save_file = file + '复购分析.xls'
writer = pd.ExcelWriter(save_file)
for i in range(2):
    if i  == 0:
        df_user_id_behavior_buy_i_value_counts.to_excel(writer, sheet_name='不同购买次数的用户数量')
    if i == 1:
        df_user_id_behavior_buy_di_value_counts_lb_all.to_excel(writer, sheet_name='购买次数>=i次的用户数量占比')
writer.save()

3.3 时间维度分析

  3.3.1 研究一天内各时段活跃人数

datesbehaviorvalue_counts
2017-11-25pv7912302
2017-11-26pv7515296
2017-11-27pv6906771
2017-11-28pv6718449
2017-11-29pv6920372
2017-11-30pv6985336
2017-12-01pv7320544
2017-12-02pv9135873
2017-12-03pv7693721
datesbehaviorvalue_counts
2017-11-25fav278933
2017-11-26fav272064
2017-11-27fav254041
2017-11-28fav252092
2017-11-29fav258982
2017-11-30fav260748
2017-12-01fav267245
2017-12-02fav343819
2017-12-03fav285106
datesbehaviorvalue_counts
2017-11-25cart501218
2017-11-26cart490790
2017-11-27cart453440
2017-11-28cart444319
2017-11-29cart457954
2017-11-30cart469017
2017-12-01cart519216
2017-12-02cart647386
2017-12-03cart539950
datesbehaviorvalue_counts
2017-11-25buy98146
2017-11-26buy86042
2017-11-27buy84120
2017-11-28buy80615
2017-11-29buy81428
2017-11-30buy81800
2017-12-01buy77664
2017-12-02buy94592
2017-12-03buy80192

 

 3.3.2 研究范围内每日活跃用户数

hoursbehaviorcountsbehaviorcountsbehaviorcountsbehaviorcounts
0cart162494fav90883pv2325668buy26370
1cart192251fav111111pv2808578buy37504
2cart221548fav128074pv3247828buy49803
3cart216068fav126020pv3150231buy47721
4cart211023fav122093pv3172085buy45661
5cart230986fav130592pv3482938buy46333
6cart228792fav128491pv3485147buy45536
7cart234180fav130783pv3617971buy45868
8cart230465fav128883pv3467993buy44173
9cart210636fav119229pv3156021buy39852
10cart208628fav115258pv3244956buy38243
11cart258591fav138917pv4105637buy45367
12cart323804fav165210pv5007207buy52044
13cart383280fav189346pv5750354buy55409
14cart400298fav201005pv5691194buy50740

一天中的每小时行为分析

观察发现各项行为数据变化趋势相同从右边的图中可以发现,流量的高峰大概在13点和14点。流量低峰大概在1920点之间,可能是由于晚上这段时间,用户上网的概率比较低。外出玩的人比较多。21点之后流量存在明显的回调,说明这段时间比较空闲,上网的概率比较大。

logger.info("数据的记录数量:{}".format(len(df_data)))

# 期间所有的用户
df_data_userid_qc = list(set(df_data['user_id']))
# 访问用户总数UV。表示为期间访问这个网站的人的统计。(去重)
UV = len(df_data_userid_qc)
logger.info('期间访问用户总数为:{}'.format(UV))
# 页面的总的访问量。
# behavior状态为pv的访问的统计。
import numpy as np
df_data_behavior_pv = list(np.array(df_data[df_data['behavior'] == 'pv']['behavior']))
df_data_behavior_pv_sl = len(df_data_behavior_pv)
# 页面的总访问数
PV = df_data_behavior_pv_sl
logger.info('页面总访问数:{}'.format(PV))
df_data_behavior_pv = list(set(df_data[df_data['behavior'] == 'pv']['user_id']))
logger.info('浏览人数:{}'.format(len(df_data_behavior_pv)))
df_data_behavior_buy = list(set(df_data[df_data['behavior'] == 'buy']['user_id']))
logger.info('购买人数:{}'.format(len(df_data_behavior_buy)))
df_data_behavior_fav_cart = list(set(df_data[(df_data['behavior'] == 'cart')|(df_data['behavior'] == 'fav')]['user_id']))
logger.info('收藏加购人数:{}'.format(len(df_data_behavior_fav_cart)))


# 用户的平均访问次数
user_id_pv_mean = PV/UV
logger.info('用户的平均访问次数:{}'.format(user_id_pv_mean))

# 购买商品的转化率
# 两个状态的人数的对比。pv:表示浏览状态→buy:表示购买的状态
# 购买转化率 = 购买产品的人数/浏览的人数
# 存在购买行为的人数
user_id_pv_buy_rate = len(list(set(df_data[df_data['behavior'] == 'buy']['user_id'])))/UV
logger.info('购买行为转化率:{}'.format(user_id_pv_buy_rate))

# 以字段'dates'为分组条件,统计'behavior'字段中不同的元素的数量的统计
df_data_groupby_date_nyr_value_counts_behavior = df_data['behavior'].groupby(df_data['dates']).agg(['value_counts']).reset_index()
#所有的行为
behavior_list = list(set(df_data['behavior']))
# 时间区间
date_nyr_list = list(set(df_data['dates'])).sort(reverse=False)
save_path = file + '每天的用户行为统计.xls'
writer = pd.ExcelWriter(save_path)
for i in behavior_list:
    df_behavior_i = df_data_groupby_date_nyr_value_counts_behavior[df_data_groupby_date_nyr_value_counts_behavior['behavior'] == i].sort_values(by = 'dates', ascending = 'True')
    logger.info("df_behavior_i为{}".format(df_behavior_i))
    if i == 'pv':
        df_behavior_i.to_excel(writer, sheet_name='每天用户行为为pv的人数的变化', index = False)
    if i == 'buy':
        df_behavior_i.to_excel(writer, sheet_name='每天用户行为为buy的人数的变化', index=False)
    if i == 'cart':
        df_behavior_i.to_excel(writer, sheet_name='每天用户行为为cart的人数的变化', index = False)
    if i == 'fav':
        df_behavior_i.to_excel(writer, sheet_name='每天用户行为为fav的人数的变化', index=False)
writer.save()

# 跳转率
# 只是点击浏览一次的用户数量/总用户访问数
df_data_pv = df_data[df_data['behavior'] == 'pv']
df_data_groupby_user_id_value_count_behavior_pv = df_data_pv.groupby('user_id')['behavior'].agg(['value_counts']).reset_index()
user_id_pv_d1 = len(df_data_groupby_user_id_value_count_behavior_pv[df_data_groupby_user_id_value_count_behavior_pv['value_counts'] > 1])
user_id_z = len(df_data_groupby_user_id_value_count_behavior_pv['user_id'])
tzl = '%.2f%%' % ((user_id_pv_d1/user_id_z) * 100)
print(tzl)
logger.info('跳转用户数量:{}'.format(user_id_z - user_id_pv_d1))


# 以字段'hours'为分组条件,统计'behavior'字段中不同的元素的数量的统计
df_data_groupby_date_nyr_value_counts_behavior = df_data['behavior'].groupby(df_data['hours']).agg(['value_counts']).reset_index()
#所有的行为
behavior_list = list(set(df_data['behavior']))
# 时间区间
date_nyr_list = list(set(df_data['hours'])).sort(reverse=False)
save_path = file + '每小时的用户行为统计.xls'
writer = pd.ExcelWriter(save_path)
for i in behavior_list:
    df_behavior_i = df_data_groupby_date_nyr_value_counts_behavior[df_data_groupby_date_nyr_value_counts_behavior['behavior'] == i].sort_values(by = 'hours', ascending = 'True')
    logger.info("df_behavior_i为{}".format(df_behavior_i))
    if i == 'pv':
        df_behavior_i.to_excel(writer, sheet_name='每小时的用户行为为pv的人数的变化', index = False)
    if i == 'buy':
        df_behavior_i.to_excel(writer, sheet_name='每小时的用户行为为buy的人数的变化', index=False)
    if i == 'cart':
        df_behavior_i.to_excel(writer, sheet_name='每小时的用户行为为cart的人数的变化', index = False)
    if i == 'fav':
        df_behavior_i.to_excel(writer, sheet_name='每小时的用户行为为fav的人数的变化', index=False)
writer.save()

 

3.4 用户价值分析

3.4.1 消费次数

用户的消费情况
总的购买次数764599
总的消费用户409322
一般消费用户236785
中频消费用户94204
高频消费用户78333
前20的用户消费次数1558

user_idFF_SCORE用户类型
7020341434高频消费用户
8666701184高频消费用户
1070131154高频消费用户
1003412974高频消费用户
432739824高频消费用户
294043784高频消费用户
337305774高频消费用户
1014116764高频消费用户
98084714高频消费用户
490508694高频消费用户
960681684高频消费用户
469870674高频消费用户
92448674高频消费用户
128379644高频消费用户
78030644高频消费用户
486458634高频消费用户
900581624高频消费用户
122504604高频消费用户
166776594高频消费用户
919666584高频消费用户

 

'''
# 用户价值分层
'''
# 用户价值分层(RFM模型)
# 对R(最近一次购买时间)和F(消费频率)的数据对客户进行评分。
# 筛选购买行为的所有记录
df_data_behavior_buy = df_data[df_data['behavior'] == 'buy']
# 筛选需要的字段
df_data_behavior_buy_yhfc = df_data_behavior_buy[['user_id', 'datetime']]
'''
R时间段的计算
'''
# 本次统计的时间为2017-11-25 到 2017-12-03
# 故以12-03为节点,以下单用户的最近一次下单时间为基期。
# 统计时间段内不同客户到12-03的交易间隔期
# 根据user_id进行分组并找出每位用户date_nyr的最大值的所有的行记录。并重新设置索引。
r = df_data_behavior_buy_yhfc.groupby('user_id')['datetime'].max().reset_index()
# 生成新的一列,为每位用户最近一次购买的间隔天数
r['R'] = (pd.to_datetime('2017-12-03') -  pd.to_datetime(r['datetime'])).dt.days
r.columns = ['user_id', 'g_datetime_max', 'R']

'''
F频次的计算
'''
# 计算期间每位用户的交易频次
# 以user_id为分组条件,计算每位用户的订单数量,即交易频次。
f = df_data_behavior_buy_yhfc.groupby('user_id')['datetime'].count().reset_index()
# logger.info('f为:{}'.format(f))
# 修改列名
f.columns = ['user_id', 'F']
sum_xfch = sum(list(np.array(f['F'])))
logger.info("总的消费次数:{}".format(sum_xfch))
# 降序排序
# f = f.sort_values(by='F', ascending=False)
# f = f.iloc[:20,:]
# print(f)
# f.to_excel(file+"前20名的用户消费的次数.xls", index = False)

# 合并R与F两个字段
rf = pd.merge(r, f, left_on='user_id', right_on='user_id', how='inner')
# 提取需要的字段
rf = rf[['user_id', 'R', 'F']]
# R,F字段的特征
R_t = rf['R'].describe()
# R字段的最大值,最小值,以及四分位置上的值
import math
R_min = int(R_t['min']) - 1
R_0_25 = int(R_t['25%'])
R_0_5 = int(R_t['50%'])
R_0_75 = int(R_t['75%'])
R_max = math.ceil(R_t['max']) + 1

F_t = rf['F'].describe()
F_max = math.ceil(F_t['max']) + 1

# logger.info('rf为{}'.format(rf))
# logger.info("rf['F'].describe()为{}".format(F_t))

# R评分的标准为:R值越小,R的得分越高
rf['R_SCORE'] = pd.cut(rf['R'], bins=[R_min, R_0_25, R_0_5,R_0_75, R_max], labels=[4, 3, 2, 1], right=False).astype(float)
# F值的评分标准为:F值越小的话,F得分越高
# 购买的频次为1时间得分为1,购买的频次为2时,得分为2,购买频次为3时间得分为3.购买频次大于3时间。得分为4
rf['F_SCORE'] = pd.cut(rf['F'], bins=[0, 1, 2, 3, F_max], labels=[1, 2, 3, 4], right=False).astype(float)
rf_f_fc = rf[['user_id', 'F', 'F_SCORE']].sort_values(by='F', ascending=False).iloc[:20,:]
rf_1 = rf.groupby('F_SCORE')['user_id'].count().reset_index()
print(rf_1)

 4.数据处理

4.1 导入数据

4.2数据清洗

4.2.1 理解字段

字段中文名字段说明字段类型
user_id用户id用户标识 int64
item_id商品id商品标识 int64
category_id商品类目id商品类目标识 int64
behavior行为类型用户行为 object
timestamps时间戳行为发生的时间戳 int64

4.2.2 缺失值处理

删除含有缺失值的所有记录

4.2.3 重复值处理

多列判断是否重复。当user_id、item_id、category_id三列的值重复时。去掉重复的记录。

4.2.4 数据一致化

转化时间类型,并添加datetime、dates、hours三个字段

4.2.5 异常值处理

检查日期是否在规定的时间范围内:2017/11/25~2017/12/03

#coding:UTF-8
import datetime
import os
import time
import pandas as pd
import numpy as np
import sys
# 当前py文件的绝对路径
file = os.getcwd() + '/'
# 输出文件假下的所有的文件名
namelist = os.listdir()
str1 = 'User'
# 输出数据分析的文件名,为name
for i in namelist:
    # 当可以找到时间,不返回-1,则表明可以找到。
    if  i.find(str1) != -1:
        name = i
# 设置读取文件时间无列标签。系统默认列标签为0, 1, 2...
df_data = pd.read_csv(file + name,  header=None)
df_data.columns = ['user_id', 'item_id', 'category_id', 'behavior', 'timestamps']
# print(len(df_data))
# 多列判断是否重复。当user_id、item_id、category_id三列的值重复时。去掉重复的行。
df_data_qc = df_data.drop_duplicates(['user_id',  'item_id',  'category_id'])
# print(len(df_data_qc))
# 删除含有缺失值的所有的行。
df_data_qc_qqsh = df_data_qc.dropna()
# print(len(df_data_qc_qqsh))
# 将时间戳修改为格式化的时间格式
# 当时间戳的位数为10位时,将时间戳转化为日期格式使用的参数为:unit='s'
df_data_qc_qqsh['datetime'] = pd.to_datetime(df_data_qc_qqsh['timestamps'], unit='s')
df_data_qc_qqsh['dates'] = df_data_qc_qqsh['datetime'].dt.date
print(list(set(df_data_qc_qqsh['dates'])).sort(reverse=False))



# 当时间戳的位数为13位时,将时间戳转化为日期格式使用的参数为:unit='ms'
# df_data_qc_qqsh['g_datetime'] = pd.to_datetime(df_data_qc_qqsh['timestamps'], unit='ms')
# print(df_data_qc_qqsh)
# 保存列为特定时间内的所有行
# 筛选出时间范围内的所有行
# &符号表示并列的意思,需要同时满足
df_data_qc_qqsh_sxsj = df_data_qc_qqsh[(df_data_qc_qqsh['datetime']  > '2017-11-25 00:00:00') & (df_data_qc_qqsh['datetime']  < '2017-12-04 00:00:00')]

# print(len(df_data_qc_qqsh_sxsj))
# 将dataframe保存为excel,不保存行索引
# 提取日期时间中的日期。
# df_data_qc_qqsh_sxsj['date_nyr'] = df_data_qc_qqsh_sxsj['g_datetime'].dt.strftime('%Y-%m-%d')
df_data_qc_qqsh_sxsj['dates'] = df_data_qc_qqsh_sxsj['datetime'].dt.date
df_data_qc_qqsh_sxsj['hours'] = df_data_qc_qqsh_sxsj['datetime'].dt.hour
print(set(df_data_qc_qqsh_sxsj['dates']))

df_data_qc_qqsh_sxsj.to_csv(file + '清洗后的电商数据.csv', index = False)

5、结论与建议

AARRR模型分析用户使用的各个环节

5.1获取用户:987976

在研究时段内,每天都有新增的用户,但新增用户在递减。

5.2 激活用户

在购物环节中,收藏和加入购物车都是确定购物意向的行为,将这两个行为合并成为购物环节中的一步。
从浏览到有购物意向只有9%的转化率,说明了大多数用户以浏览为主而购买转化比较少,此处为转化漏斗中
需要改善和提高的环节。
建议:1、优化电商平台的搜索匹配和推荐策略,主动根据客户的喜好推荐相关的商品。
      2、给用户提供同类产品的比较功能,让用户不需要多次返回搜索结果反复查看,便于用户确定心仪的产品。
      3、在商品的详情页的展示上突出用户关注的重要信息,减少用户寻找信息的成本。

5.3 留存分析

在26号、27号,留存率存在上升的趋势。三种类型的留存率均维持在60%以上,表现非常优秀的.11-30、12-01较的留存率相较之前有大约20%的上涨。故促销活动能为提升留存率带来一定的正面影响

5.4 增加收入

APP的用户中间有41.5%的付费用户,付费转化率属于中等水平。
有购买行为的用户中,大概有42.15%的用户会重复购买,淘宝APP的复购率相对客观。
应该将经营的重点转化为培养用户的忠诚度上,鼓励用户进行更高频次的消费。
高复购次数的用户少,商家可以从商品质量、服务质量、物流体验三个方面寻找原因,定位问题点,寻求高复购率。
研究用户每天的行为分布、每小时的行为分许
1、在12月2号收藏和加购的数量存在大幅上涨,为周末,故周末多推出营销活动,上班族周末空闲时间的消费欲望还存在很大的挖掘潜力。
2、流量的高峰大概在13点和14点。21点之后流量存在明显的回调,说明这段时间比较空闲,上网的概率比较大。针对高峰期进行营销活动,此时使用人数最多,营销活动可以通过促销,拼团等方式。
通过用户的消费频次找出最具有价值的付费用户群体。
1、通过用户的消费频次找出最具有价值的付费用户群体。对这部分用户的行为进行分析。对于高频消费类型的用户需要重点关注,并且活动投放需要谨慎对待,不要引起用户的反感。
商品的销售情况分析
1、浏览量最高的商品812879没有进入销量前20,销量最高的商品3557522没有进入浏览榜单前20.说明了这些吸引用户更多注意的商品没有很好的转化成实际的销量。
针对浏览量高而销量不高的这部分商品,商家可以从以下几个方面提高销量:
1、诚信吸引用户
2、从用户的角度出发设计详情页信息流展示,便于用户获取信息。
3、优化视频展示形式。
4、评论区评价管理,认真对待差评,分析自身劣势,并做出积极的回应和弥补。
2、商品转化率分析
(1)在销量前20的商品中付费率浏览到购买的转化率达到50%以上的商品数有5个。最高的商品转化率达到77.42%。
(2)浏览前20的商品中存在11个商品也是收藏前20的商品,说明浏览和收藏存在很强的相关性。需要重视这些商品,能够吸引顾客的注意。重点分析,这些商品吸引的顾客的类型,并采取针对性的营销策略。
(3)加购前20的商品中存在5个也是销量前20的商品,说明加购与销量存在很强的相关性质,我们应该重点关注用户加购的商品,说明该用户关注这一类型的商品,并对此采取针对性的营销的策略。
3、用户浏览行为的相关性结论。
(1)浏览与购买存在相关性
(2)浏览与收藏存在很强大的相关性
(3)加购与购买存在相关性
(4)加购与购买的相关性强于浏览与购买的相关性

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值