数据源来自和鲸社区分享的泰迪公司提供的百货商店会员数据。
会员信息表:会员卡号 出生时间 性别 登记时间
订单表:会员卡号 消费时间 商品编码 销售数量 商品售价 消费金额 商品名称 此次消费的会员积分 收银机号 单据号 柜组编码 柜组名称
本项目主要围绕着“百货商店会员用户画像描绘与价值分析”内容进行,结合目前百货商场的数据情况,
可以实现以下目标:
借助百货商场会员用户数据,对会员用户进行分群。
对不同的会员用户类别进行特征分析,比较不同类别会员用户的会员用户价值。
对不同价值的会员用户类别提供个性化服务,制定相应的营销策略。
一、数据预处理
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、会员信息表
list(user_info.isnull().sum())
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()
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)
user_info = user_info[(user_info['出生年']<=2019)&(user_info['出生年']>=1919)]
user_info.index = range(user_info.shape[0])
user_info['出生年'].value_counts()
user_info['会员卡号'].drop_duplicates(keep='first')
user_info['年龄'] = 2019-user_info['出生年']
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