笔记整理1

# unique()返回的是值为布尔型的数组,nunique()返回的是唯一值的数量的多少
dataframe.nunique()
# 保留2017.11.25-2017.12.3期间的数据
startTime = datetime.datetime.strptime("2017-11-25 00:00:00","%Y-%m-%d %H:%M:%S")
endTime = datetime.datetime.strptime("2017-12-03 23:59:59","%Y-%m-%d %H:%M:%S")

dataframe = dataframe[(dataframe.time>=startTime)&(dataframe.time<=endTime)]
dataframe = dataframe.reset_index(drop=True)
# 按照日期和小时进行时间拆分
dataframe['date'] = dataframe.time.dt.date
dataframe['hour'] = dataframe.time.dt.hour
# 取消科学计数法,保留两位小数
pd.set_option("float_format", lambda x: "%.2f" % x)

用户转化漏斗分析
行为(pv,buy,cart,fav)数,行为转化率,分析两条路径:点击->收藏->购买;点击->加购->购买

pv_df = dataframe[dataframe['type']=='pv']
buy_df = dataframe[dataframe['type']=='buy']
cart_df = dataframe[dataframe['type']=='cart']
fav_df = dataframe[dataframe['type']=='fav']
# process1 点击->加购->购买
pv_cart_df = pd.merge(left=pv_df,right=cart_df,how='inner',on=['userid','itemid','categoryid'],suffixes=('_pv','_cart'))
cart_buy_df = pd.merge(left=cart_df,right=buy_df,how='inner',on=['userid','itemid','categoryid'],suffixes=('_cart','_buy'))
count_users_pv_cart = pv_cart_df[pv_cart_df.time_pv < pv_cart_df.time_cart].userid.nunique()
count_users_cart_buy = cart_buy_df[cart_buy_df.time_cart < cart_buy_df.time_buy].userid.nunique()

# process2 点击->收藏->购买
pv_fav_df = pd.merge(left=pv_df,right=fav_df,how='inner',on=['userid','itemid','categoryid'],suffixes=('_pv','_fav'))
fav_buy_df = pd.merge(left=fav_df,right=buy_df,how='inner',on=['userid','itemid','categoryid'],suffixes=('_fav','_buy'))
count_user_pv_fav = pv_fav_df[pv_fav_df.time_pv < pv_fav_df.time_fav].userid.nunique()
count_user_fav_buy = fav_buy_df[fav_buy_df.time_fav < fav_buy_df.time_buy].userid.nunique()
#计算转化率
fav_cart_ratio = (count_user_pv_fav+count_users_pv_cart)/total_unique_users
buy_ratio=(count_user_fav_buy+count_users_cart_buy)/total_unique_users

时间维度分析

  1. 用户行为时间维度分析
  2. 用户量时间维度分析

用户行为变化

  • 用户行为变化趋势
    • 点击量、收藏量、加购量、购买量在2017/12/02当天上升明显,尤其,2017/12/02和17/11/25同为周六,相比之下,2017/12/2点击量上升尤为明显,经过查找和推测,2017/12/02当天淘宝开始为“双十二”活动进行预热,开启商品精选活动,因此吸引了更多的点击量。
    • 周末的各项指标都优于周内,周六周日用户尤为活跃,用户有更多的时间可以逛淘宝,因此一些营销活动应当在周六周日进行。
  • 用户行为时段分布
    • 各时段指标走势大致一致。
    • 5:00-10:00及18:00-21:00两段时间是用户活跃度迅速增长的时段。
    • 10:00-18:00这个时间段的用户活跃度上下浮动,但基本保持着同一水平。
    • 13:00,15:00这两个时间段是用户活跃度稳定阶段的两个小高峰,我们可以猜测13:00是因为用户工作午休结束了拿起手机再摸一会儿鱼造成的,15:00是因为工作了一两个小时又想摸鱼。17:00开始一部分用户下班了或马上下班,可以开始正大光明摸鱼。
    • 21:00达到用户操作量峰值。
      一些广告推广或者活动营销可以在18:00-21:00这段时间加大力度;

用户量分别情况

  • 每日用户量统计情况
    • 每日的活跃用户量基本在71%左右,而成交客户基本维持在20%
    • 2017/12/02和2017/12/03购买量和购买人数是上涨的,而活跃用户比例较前三天下降了一个百分点,且付费用户占比,ARPU、ARPPU均下降了一到两个百分点。
    • 这9天内,用户活跃天数呈现正态分布,用户活跃天数主要集中在3-7天(用户当天操作记录达3条算作当天活跃)
dates_df['uv'] = [groupby_date.get_group(d).userid.nunique() for d in dates]  # 每日独立访客量

# 自定义当天使用淘宝app进行5次操作(无论是查看详情页、收藏、加入购物车还是购买都算)的用户就是活跃用户
active_user_standard = 3                                                      # 自定义活跃用户操作次数基准
dates_df['dau'] = [(groupby_date.get_group(d).groupby(by='userid').size()>active_user_standard).value_counts()[True] for d in dates]
dates_df['au_rate'] = dates_df['dau']/dates_df['uv']                          # 活跃用户比例
dates_df['buyer'] = dataframe[dataframe['type']=='buy'].groupby(by=['date','userid']).size().count(level=0)
dates_df['buyer_rate'] = dates_df['buyer']/dates_df['uv']                     # 付费用户比例
dates_df['ARPU'] = dates_df['buy']/dates_df['uv']                             # 人均购买量=总交易量/当日UV
dates_df['ARPPU'] = dates_df['buy']/dates_df['buyer']                         # 付费用户人均购买量
dates_df

用户价值分析——RFM分析(Recency,Frequency,Monetary)

RFM模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱3项指标来描述该客户的价值状况。

  • R(Recency):客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久,反之则表示客户交易发生的日期越近。\
  • F(Frequency):客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃。\
  • M(Monetary):客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则表示客户价值越低。
    本次分析数据集不含金额,因此仅从R、F两个维度进行分析
# R:Recency最近一次交易日期间隔;F:Frequency频率,交易次数
groupby_buy_userid = dataframe[dataframe['type']=='buy'].groupby(by='userid')
# 先创建一个空的DataFrame
RF = pd.DataFrame(index=groupby_buy_userid.groups.keys(), columns=['R', 'F'])

RF['F'] = groupby_buy_userid.type.count()
RF['last_buy_time'] = groupby_buy_userid.time.max()
# 假设获取数据集的第二天进行分析,所以选择2017/12/04为对照日期,保留天数
RF['R'] = (pd.to_datetime('2017-12-04')-RF['last_buy_time']).dt.days
# 最近的一次交易记录距离2017/12/04为0天
# 即12/03购买相差还不到一天,最远的为9天,平均为2.53天
# R我们划分4个区域 0-1,2-3,4-6,7-9,分别得分4,3,2,1

# 交易次数最少为1次最多为93次,平均3次
# 这里的3次分母是所有购买过商品的用户
# 而之前得出的人均购买次数2次分母是所有用户
# F划分4个区域 1,2,3,4+,分别得分1,2,3,4

RF[['R','F']].describe()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值