某电商用户行为分析-提升GMV

目录

1. 明确项目背景和需求

项目目的:

分析思路:

2 数据探索(EDA)

2.1 数据集信息

2.2数据预览

2.2.1 new_user

 2.2.2 age

2.2.3 sex

2.2.4 market

 2.2.5 device

2.2.6 operative_system

 2.2.7 source

2.2.8 total_pages_visited

3.数据预处理(Data Processing)

3.1.1 异常值分析

3.1.2 缺失值分析(Miss value)

4.漏斗分析

4.1 漏斗分析:sex纬度​编辑

4.2 漏斗分析:device纬度

5. 特征工程

5.1 特征构建

5.2特征选择

 5.3 特征处理

 6. 建模

6.1 逻辑回归

6.1.1 划分训练集和测试集

6.1.2 用训练集训练模型 

6.1.3 用训练好的模型来预测测试集

6.2决策树

6.2.1划分训练集和测试集

6.2.2 用训练集训练模型

6.1.3 用训练好的模型来预测测试集

 7.调参

7.1 随机搜索模型进行调参

 7.2 重新进行建模

8.回到项目发散

8.1 用户浏览页面数

8.2 年龄​编辑

8.3 不同来源客户的转化率​编辑

 9.决策建议

9.1 提高UV

9.2 提高转化率

9.2.1 影响用户转化率的因素

9.2.2 漏斗分析

10.不足


1. 明确项目背景和需求

项目目的:

项目是为了通过对某电商用户的行为进行分析,从而找到提升GMV方法。

分析思路:

        项目GMV的拆解公式为:GMV=UV(独立访客数)* 用户下单转化率 * 客单价,由于数据集不涉及客单价相关的内容,故优化GMV主要考虑提高UV和提升转化率这两个方面。提高UV的方法就是拉新,这需要对我们的用户进行拆解,找出新客户的来源的主要渠道,拉来更多的新用户。提高转化率主要有两方面:一方面是提高转化率高的那群人的占比,这需要找出哪些因素(随机森林模型)影响了用户的转化率,另一方面是找出转化率的环节,看是否有异常,如果有就优化掉。

2 数据探索(EDA)

2.1 数据集信息

因列数太长,无法完全显示,故一一列出各列的含义:
user_id :用户id
new_user :是否新用户 是:1、否:0
age :用户年龄
sex :用户性别
market :用户所在市场级别
device :用户设备
operative_system :操作系统
source :来源
total_pages_visited :浏览页面总数
home_page : 浏览过主页的用户
listing_page : 浏览过列表页的用户
product_page : 浏览过产品详情页的用户
payment_page : 浏览过支付结算页的用户
payment_confirmation_page : 浏览过确认支付完成页的用户

NAN值代表用户未浏览该页面,为了方便后面的计算,此处替换为0.

# 数据清洗
# 将不同页面的nan值替换为0
for col in['home_page','listing_page','product_page','payment_page','confirmation_page']:
    user_info[col].fillna(0,inplace = True)
user_info.head()

 可以看到已经转换成功了。

# 便于计算,利用正则表达式将page页面信息转化为数字
for col in ['home_page','listing_page','product_page','payment_page','confirmation_page']:
    user_info[col].replace(re.compile('page'),1,inplace=True)
user_info.head()

 接下来通过info()了解数据类型,查看是否有缺失值(NAN)

可以看到性别、设备、操作系统、来源存在空值,后面需要进行处理。

最大年龄有123岁,属于异常值,还需进一步查看大于100岁的用户个数。

查看数据维度

查看最终转化人数 查看最终转化率

这是我们项目数据集得到的最终转化率2.4%。 

2.2数据预览

2.2.1 new_user

plt.figure(figsize=(10,6),dpi=400 )
new_user = pd.DataFrame(user_info['new_user'].value_counts().reset_index(name= 'counts'))
g = sns.barplot(x = 'index', y = 'counts',data = new_user)
for index,row in new_user.iterrows():
    g.text(row.name,row.counts,row.counts,color = 'black',ha = 'center')
plt.xlabel('用户新老',fontsize=30)
plt.ylabel('数量',fontsize=30)
# width=0.1
plt.show()

 68475的新用户,31525万的老用户,为了直观的观察两者之间的比例,用饼图展示。

 2.2.2 age

# age 年龄 选择用直方图观察,是连续型数值变量,所以可以用直方图展示
plt.figure(figsize=(8,6),dpi=400)
sns.displot(user_info['age'])

 可以看到年龄基本集中在20~36岁,前面观察到的123基本可以确定为异常值了。

2.2.3 sex

# 性别
plt.figure(figsize=(10,6),dpi = 400)
sex = pd.DataFrame(user_info['sex'].value_counts().reset_index(name='counts'))
g = sns.barplot(x = 'index',y='counts',data = sex)
for index,row in sex.iterrows():
    g.text(row.name,row.counts,row.counts,color = 'black',ha='center')
plt.xlabel('用户性别')
plt.ylabel('数量')

 女性的用户数更多,同样的,看看男女之间的比例是多少

sex = pd.DataFrame(user_info['sex'].value_counts())
labels = sex.index
sizes = sex.values
colors = ['green','c','gray','beige','darkkhaki','fuchsia']
explode = (0.05,0)

patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
                                labeldistance = 1.1,autopct='%2.0f%%',shadow=False,
                                startangle = 90,pctdistance = 0.5)
for t in l_text:
    t.set_size = 30
for t in p_text:
    t.set_size = 20
plt.axis('equal')
plt.legend(loc='upper Right',bbox_to_anchor = (-0.1,1))
plt.grid()
plt.show()

2.2.4 market

# market  看一下市场,我们看到一线城市的比例明显高于其他城市
plt.figure(figsize=(10,6),dpi = 400)

country = pd.DataFrame(user_info['market'].value_counts().reset_index(name='counts'))

g = sns.barplot(x = 'index',y='counts',data = country)

for index,row in country.iterrows():
    g.text(row.name,row.counts,row.counts,color = 'black',ha='center')
    
plt.xlabel('市场级别')
plt.ylabel('数量')

 一线城市的用户数量明显多于2、3、4线城市。看看他们分别的占比

 2.2.5 device

# device 设备   可以看到用手机登陆的,是比直接用桌面网页登陆的多
plt.figure(figsize=(20,8))
device = pd.DataFrame(user_info['device'].value_counts().reset_index(name ='counts'))
g = sns.barplot(x = 'index',y='counts',data = device)
for index,row in device.iterrows():
    g.text(row.name,row.counts,row.counts,color = 'black',ha='center')
plt.xlabel('用户设备')
plt.ylabel('数量')
plt.show()

用手机登陆的该电商的数量,是比直接用桌面网页登陆的多,看看占比。

2.2.6 operative_system

# 操作系统,主流的三个操作系统
plt.figure(figsize=(20,8))
operative_system = pd.DataFrame(user_info['operative_system'].value_counts().reset_index(name ='counts'))
g = sns.barplot(x = 'index',y='counts',data = operative_system)
for index,row in operative_system.iterrows():
    g.text(row.name,row.counts,row.counts,color = 'black',ha='center')
plt.xlabel('用户操作系统')
plt.ylabel('数量')
plt.show()

用户使用的最多的还是目前主流的操作系统:windos、iOS、android。看看各类的占比。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值