O2O优惠券使用预测

该博客主要探讨了O2O领域的优惠券使用情况,通过对用户消费行为和商户优惠券发放的数据进行深入分析,包括用户消费次数的月度趋势、领券与消费的比较、商家发放优惠券的数量排名,以及用户消费距离的分布。此外,还进行了数据清洗和预处理,如处理缺失值、转换数据类型、统一优惠表示,并构建样本标签,为后续的预测模型做准备。
摘要由CSDN通过智能技术生成


一、数据读取

import pandas as pd 
# 训练样本
data_train = pd.read_csv('./data/train.csv') 

# 测试样本
data_test = pd.read_csv('./data/test.csv')

二、数据探索与分析

2.1 简单的描述性统计分析

data_train.head() # 查看训练样本前5行
data_test.head() # 查看测试样本前5行
data_train.shape  # 查看训练样本的形状
data_train.columns # 查看训练样本的列名称
# 统计训练样本
explore_train = data_train.describe(percentiles=[],include='all').T  # T:转置(转换行列位置)
explore_train['null'] = data_train.isnull().sum() # 计算每一个字段缺失值个数
explore_train = explore_train[['null','max','min']] # 筛选字段
def explore_data(data=None):
    '''
    实现对数据进行描述性统计
    param data:数据
    return:描述性统计结果(空值、最大值、最小值)
    '''
    d_d = data.describe(percentiles=[],include='all').T # 对数据做描述统计
    d_d['null'] = data.isnull().sum() # 计算每一个字段缺失值个数
    d_d = d_d[['null','max','min']] # 筛选字段
    return d_d # 返回结果
explore_test = explore_data(data_test) # 对测试样本进行描述性统计

2.2 分析用户消费行为信息

2.2.1 绘制2016年1-6月份各月份用户消费次数折线图

'''
1、合并数据
2、处理date字段
3、提取月份
4、对各个月份用户消费次数进行统计
5、绘制用户消费次数折线图
'''
# 合并数据
data1 = pd.concat([data_train,data_test],axis=0,join='outer')

# 处理date字段
data1['date'] = pd.to_datetime(data1['date'].astype(str).apply(lambda x:x.split('.')[0]))
# 提取月份
data_month = data1['date'].apply(lambda x:x.month)
# 对各个月份用户消费次数进行统计
month_count = data_month.value_counts().sort_index(ascending=True)
# 绘制各个月份用户消费次数折线图
'''
1、设置画布大小(创建一张指定大小的画布)
2、设置正常显示中文
3、添加一下画布组件
4、绘制折线图
5、图表展示
'''
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5)) # 设置画布大小
plt.rcParams['font.sans-serif'] = 'FangSong' # 设置正常显示中文
plt.title('2016年1-6月各月用户消费次数') # 添加画布标题
plt.xlabel('月份') # 添加x轴标签
plt.ylabel('消费次数') # 添加y轴标签
plt.plot(month_count.index,month_count.values,color='skyblue',linewidth=3.0,linestyle='-.') # 绘制折线图
plt.show() # 图表展示

2.2.2 绘制用户领券次数与优惠券消费次数的柱状图

'''
1、处理date_received字段
2、提取date_received字段的月份
3、对各个月份用户领券次数进行统计
4、获取领券后消费的数据(优惠券id不为空且date不为空)
5、统计1-7月份领券消费次数
6、绘制用户领券次数与优惠券消费次数柱状图
'''
# 处理date_received字段
data1['date_received'] = pd.to_datetime(data1['date_received'].astype(str).apply(lambda x:x.split('.')[0]))
# 提取date_received字段的月份
received_month = data1['date_received'].apply(lambda x:x.month)
# 对各个月份用户领券次数进行统计
received_count = received_month.value_counts().sort_index(ascending=True)
# 获取领券后消费的数据(优惠券id不为空且date不为空)
consume_data = data1.loc[data1['coupon_id'].notnull() & data1['date'].notnull(),'date']
# 部分电脑遇到的报错:date字段找不到
consume_data = data1.loc[data1['coupon_id'
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值