某商场用户画像、时间偏好与价值分析

数据源来自和鲸社区分享的泰迪公司提供的百货商店会员数据。 
会员信息表:会员卡号 出生时间 性别 登记时间
订单表:会员卡号 消费时间 商品编码 销售数量 商品售价 消费金额 商品名称 此次消费的会员积分 收银机号 单据号 柜组编码 柜组名称

本项目主要围绕着“百货商店会员用户画像描绘与价值分析”内容进行,结合目前百货商场的数据情况,
可以实现以下目标:
	借助百货商场会员用户数据,对会员用户进行分群。
	对不同的会员用户类别进行特征分析,比较不同类别会员用户的会员用户价值。
	对不同价值的会员用户类别提供个性化服务,制定相应的营销策略。

一、数据预处理

  • 导包和数据
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import warnings

warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')

user_info = pd.read_excel('会员信息表.xlsx')
order_info = pd.read_csv('订单表.csv',sep=',')   

1、会员信息表

# 1、缺失值处理
list(user_info.isnull().sum()) # [0, 34188, 9435, 12684]  卡号 出生日期 性别 登记时间
  # 登记时间\出生日期直接删除 
user_info.dropna(subset=['登记时间'],inplace=True)
user_info.dropna(subset=['出生日期'],inplace=True)
  # 性别原本比例相差较大,故用众数填充影响不大 
user_info['性别'].fillna(user_info['性别'].mode().values[0],inplace=True)
user_info.info()

在这里插入图片描述

# 2、异常值处理
user_info['出生年'] = user_info['出生日期'].astype(str).apply(lambda x: x[:4])
user_info.drop('出生日期', axis = 1, inplace = True)
user_info['出生年'].value_counts().sort_index()

user_info['出生年'] = user_info['出生年'].astype(int)
# 出生年这列值出现较多的异常值,以一个正常人寿命为100年算起,我们假定会员年龄范围在1919-2019之间,将超过该范围的值当作异常值进行剔除
user_info = user_info[(user_info['出生年']<=2019)&(user_info['出生年']>=1919)]
user_info.index = range(user_info.shape[0])
user_info['出生年'].value_counts()

在这里插入图片描述

#3、删除卡号重复值
user_info['会员卡号'].drop_duplicates(keep='first')
user_info['年龄'] = 2019-user_info['出生年']   # 这里以2019年为基数 因为数据是2015—2018年的
user_info.drop('出生年',axis=1,inplace=True)
user_info.info()

在这里插入图片描述

2、订单表

round(order_info.describe(),3)  # 结果中有负数存在 
# 将负数部分全部删除 
order_info = order_info[(order_info['销售数量']>0)&(order_info['消费金额']>0)&(order_info['此次消费的会员积分']>0)]
# 产看缺失值计数
order_info.isnull().sum()
# 柜组不重要 直接删除该列
order_info.drop(['柜组编码','收银机号','柜组名称'],axis=1,inplace=True)
order_info.info()

在这里插入图片描述

  • 将两张表合并为一张表
data = order_info.merge(user_info,on='会员卡号',how='left')
data.head(4)  

在这里插入图片描述

  • 明显结果中的性别、登记时间和年龄列有空值,但不需要删除了,因为user_info表仅包含开通会员的卡号,而order_info订单表中的人不一定都开通了会员。
  • 添加是否为会员列,是1,否0。
data['会员'] = 1
data.loc[dat
  • 1
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值