爱收集资源网

O2O行业关联数亿消费者分析店面客流量是否火爆的影响因素

网络整理 2022-04-10 10:03

1 项目背景

随着移动设备的完善和普及,移动互联网+各行各业进入快速发展阶段,其中O2O(Online to Offline)消费最为抢眼。据不完全统计,O20行业估值上亿的初创公司至少有10家,也有数百亿的巨头。

O2O产业关联着亿万消费者,各类APP每天记录超过100亿条用户行为和位置记录,成为大数据科研与商业运营的最佳结合点之一。利用优惠券盘活老用户或吸引新顾客购物是O2O重要的营销手段。但是,随机放置的优惠券会对大多数用户造成毫无意义的干扰。对于商家而言,垃圾邮件优惠券会降低品牌声誉,并使其难以估算营销成本。个性化配送是提高优惠券核销率的重要技术。它可以让有一定偏好的消费者获得实实在在的利益,同时赋予商家更强的营销能力。

2 分析目标

1.分析店铺流量是否受欢迎的影响因素

2.分析客户消费习惯

3.分析送出优惠券的使用情况

3 数据介绍

4 数据分析4.1 加载数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 正常显示中文
plt.rcParams['axes.unicode_minus'] = False #正常显示负号
# parse_dates参数表示将列转换为日期格式
offline = pd.read_csv('ccf_offline_stage1_train.csv',parse_dates=['Date_received','Date'])
offline.info()
offline.head(10)

4.2 数据预处理4.2.1 检查空值

通过查看空值情况发现,如果优惠券id、折扣率、优惠券消费日期的空值个数相同,则可能出现两者都为空的情况。

4.2.2 调整“Discount_rate”列的数据格式

将数据表中的完整扣除表转换为贴现率的形式。

#将NaN转换成null方便函数的逻辑判断
offline['Discount_rate'] = offline['Discount_rate'].fillna('null')
# 折扣率转换函数
def discount_rate_func(s):
    if ':'in s:
        split = s.split(':')
        discount_rate = (int(split[0]) - int(split[1])) / int(split[0])
        return round(discount_rate,2)
    elif s == 'null':
        return np.NaN
    else:
        return float(s)
offline['Discount_rate'] = offline['Discount_rate'].map(discount_rate_func)
offline.head(10)

4.2.3空值关系分析

Coupon_id 代表优惠券ID。如果为null,则表示没有该优惠券,因此Discount_rate 和Date_received 列中的数据没有意义。对应上面的猜测,三个同时都是空的。

检查三者是否为空与非空一一对应。

从上面的检查结果我们知道,在没有优惠券的情况下,最后两个字段也是没有意义的。

注意:此时的空值不能随便删除有赞每日数据分析,因为有消费券还是没有的情况。也就是说,空值也有其对应的含义。

qq每日领赞福利网站_有赞每日数据分析_qq说说每日10个免费赞

5 具体分析5.1 使用优惠券消费分析

有以下四种情况:

cpon_no_consume = offline[(offline['Date'].isnull() & offline['Coupon_id'].notnull())]
no_cpon_no_consume = offline[(offline['Date'].isnull() & offline['Coupon_id'].isnull())]
no_cpon_consume = offline[(offline['Date'].notnull() & offline['Coupon_id'].isnull())]
cpon_consume = offline[(offline['Date'].notnull() & offline['Coupon_id'].notnull())]

绘制饼图比例:

# 将数据合在一起
consume_status = {'cpon_no_consume':len(cpon_no_consume),'no_cpon_consume':len(no_cpon_consume),'cpon_consume':len(cpon_consume)}
consume_status = pd.Series(consume_status)
# fig画布,ax表示坐标
fig,ax = plt.subplots(1,1,figsize=(8,10))
# 
consume_status.plot.pie(ax=ax,
                        autopct='%1.1f%%',
                        shadow=True,
                        explode=[0.02,0.02,0.02],    #分饼间隔
                        textprops={'fontsize':15,'color':'blue'},    #文本属性
                        wedgeprops={'linewidth':1,'edgecolor':'black'},
                        labels=['有券未消费\n({})'.format(len(cpon_no_consume)),
                                '无券消费\n({})'.format(len(no_cpon_consume)),
                                '有券消费\n({})'.format(len(cpon_consume)),]      #添加注释
                       )
ax.set_ylabel('') #去除左边的ylabel 默认为None
ax.set_title('消费占比情况')        # 标题设置
plt.legend(labels=['有券未消费','无券消费','有券消费'])  # 图例设置

由此可以得出一些简单的结论。(轻微地)

5.2 优惠券消费者距离及折扣率分析

平均距离为 0 表示距离小于 500 米。

可以得出,距离商户500米以内的有优惠券客户的商户约有1431家。

由此,获得关于折扣强度的信息。

5.持券购物人数最多的3家商户

对于拥有超过 500 个优惠券持有者的商家,将顾客到商店的平均距离和平均折扣联系起来:

5.4到店购物人数与平均距离和折扣力度的相关系数

corr(),用于计算DataFrame中列之间的相关性(皮尔逊相关系数)有赞每日数据分析,取值在[-1, 1]之间。

1 表示完全正相关,-1 表示完全负相关

可以得出结论,消费者数量和距离与折扣率呈负相关。距离越小,优惠越小(即优惠越大),人数越多

消费者分析 关联营销 优惠券