一、分析背景

根据小红书的部分用户数据以及消费行为数据,使用Python建立线性回归模型,找到对用户消费影响较大的因素,预测用户的消费金额变化。根据模型,确定销售额较高用户的相关特征,并由此提出营销方案建议。

二、数据分析的流程

数据分析的整体流程如图所示:

(一)数据概况分析

1、调用基本包和读取数据

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

%matplotlib inline

df = pd.read_csv('小红书数据.csv')

2、数据概况分析

使用info/describe/head这3个函数查看数据的基本情况

# 使用head函数查看前5行数据

df.head()

共有8个数据变量,为了后续分析方便,下面对这8个变量进行简单的分类和含义说明:

# 使用info函数查看数据总体情况,包括行数、列数、各列名称、数据类型等

df.info()

# 使用describe函数查看所有数值型变量的描述统计,包括均值,最大值,最小值,标准差等

df.describe()

发现:gender、age和engaged_last_30这3个字段中都存在很多缺失值,而且gender和engaged_last_30的数据类型不对,它们应该是类别型变量。

3、缺失值处理

先查看缺失值在整个数据集中的占比情况,发现缺失值的占比很大接近40%,因此不能直接删除,需要根据情况进行数据的填充;

df.isnull().sum()/len(df)

这里先处理数值型变量,再处理类别型变量;

对于数值型变量的缺失处理,可以使用均值填充、中位数填充或数据模型填充等方法;

# 对age进行均值填充

df.age = df.age.fillna(df.age.mean())

对于类别型变量,要先把缺失值填充成unknown,再生成哑变量,对gender和engaged_last_30进行同样的处理;

# 生成哑变量,并查看处理后的前5行数据

df_dummies = pd.get_dummies(df)

df_dummies.head()部分字段截图

(二)单变量分析

1、数字型变量

使用df.describe(),查看数字型变量的描述指标,均值,最大值,最小值,标准差等;

发现:用户下单金额和用户以往累计购买金额的极差都非常大,可能存在离群值;

用户年龄分布在14~45岁之间,平均年龄29岁;

这些用户最近一次下单距今的天数都比较小,也就是说这些用户的购买记录都比较新,最长的也只有23天,说明复购率比较高;

用户过往在第三方APP购买的数量较少,大部分用户只购买自营产品,用户忠诚度较高;

2、类别型变量

主要分析类别型变量中有多少个分类,各自的占比,以及这些类别对应的revenue(销售额)是怎样的情况;

(1)gender:1-男性,0-女性

df.groupby('gender').revenue.describe()

发现:女性用户数远超过男性用户,这与小红书的定位用户群体也是相符的;

相比女性用户,男性用户的平均消费额反而更高,值得引起注意;

未知性别用户所占的比例也很高,而且他们的平均消费额比男性更高,在实际业务中需要进一步分析这部分用户群体中是否有更大比例的女性用户;

(2)engaged_last_30:最近30天有在APP上参与重要活动

df.groupby('engaged_last_30').revenue.describe()

发现:最近30天有在APP上参与重要活动的用户量虽然很少,但是他们的平均消费额明显更高;

这里未知用户的比例也很高,猜测可能是因为这部分用户没有参与任何活动,因此也就没有这个字段的信息记录;

营销建议:可以通过一些手段提高用户参与重要活动的积极性,会有助于提升销售业绩;

(3)lifecycle:生命周期,A-注册后6个月内,B-注册后1年内,C-注册后2年内

df.groupby('lifecycle').revenue.describe()

发现:注册后6个月之内的用户,平均消费额最多,说明新用户的消费力比较高;

这里大部分用户都是注册后2年内的,说明老用户的复购率比较高,平台黏性较高;

营销建议:(1)通过拉新,增加新用户的数量来提升销售额;(2)做好老用户的留存,可以通过发放消费券给老用户,刺激老用户继续消费;

(三)相关与可视化

分析revenue与其他变量的相关分析;

df_dummies.corr()[['revenue']].sort_values('revenue',ascending=False)

可以看出,除了previous_order_amount,其他变量与revenue的相关性都很小;

通过散点图发现,revenue中存在一些离群值,可能会影响模型效果;

# 散点图

sns.regplot('previous_order_amount','revenue',df)

(四)回归模型

1、模型建立

使用sklearn包中的线性回归模型,因变量y是revenue,这里自变量选择与revenue相关性最高的变量previous_order_amount进行建模;

from sklearn.linear_model import LinearRegression

model=LinearRegression()

y=df['revenue']

x=df[['previous_order_amount']]

model.fit(x,y)

查看自变量系数和模型截距;

2、模型评估

评估模型的常用指标为MAE(平均绝对误差)与RMSE(均方根误差),使用这2个指标对模型效果进行评估;

# 模型的评估

score=model.score(x,y)#x和y打分

print(score)

predictions=model.predict(x)#计算y预测值

error=predictions-y#计算误差

rmse=(error**2).mean()**.5#计算rmse

mae=abs(error).mean()#计算mae

print(rmse)

print(mae)

发现模型的打分并不高;

也可以通过标准的模型输出表,直接训练模型并查看模型参数;

# 标准的模型输出表

from statsmodels.formula.api import ols

model_ols=ols('y~x',df).fit()

#观察coef-系数,P值显著性

print(model_ols.summary())

结果:revenue=237.1796+0.0684*previous_order_amount,即用户以往累计的购买金额每增加1000元,它本次的的销售额就会增加68元;但R方非常低,需要寻找更好的模型。

3、模型优化

模型优化的方向有:模型中增加变量,缺失值的填充调整,离群值的处理,数据分组等;

这里仅对revenue的离群值进行优化处理,使用直方图查看revenue的分布情况:

sns.distplot(df['revenue'])

这里打算取revenue<=2000的值,先查看这部分数据在整体数据中的占比,发现超过98%,对整个数据集的影响较小;

df1=df[df['revenue']<=2000]

sns.distplot(df1['revenue'])

结果显示,评分的变化不大,但均方根误差有明显下降,从之前的946下降到现在的372。

三、营销建议

分析发现,最近30天有在APP上参与重要活动的用户、注册后6个月之内的新用户、以往累计购买金额较多的用户,他们的平均消费额更高;对此提出以下营销建议:

1、针对新用户,可以举办拉新活动,增加新用户的数量来提升销售额的增长;

2、针对老用户,进行重要活动的消息推送,来吸引老用户多参与活动以提升销售额;

3、做好老用户的留存和促活,比如对于超过1个月没有消费的用户,可以发放消费券,刺激老用户回到平台进行消费;

4、数据显示男性用户的购买力也不可小觑,因此针对男性用户可以推送他们感兴趣的内容。

python创建变量revenue_Python数据分析:小红书销售额预测相关推荐

  1. python创建变量_python创建变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建: 当python变量'赋值'时,根据值类型创建变量,如:a=1引用: 当参 ...

  2. python创建变量revenue、并赋值为98765_Python入门笔记_01

    ☆ 在 Python 交互式环境中 编写并执行代码: - 在「cmd」中 输入 Python ,如果看见 >>> 就可以输入Python 代码了,「回车」执行代码. - 如果没有看见 ...

  3. 小红书销售额预测模型-线性回归

    数据: 数据链接 提取码: j4cd 仅作为个人数据分析成长之路记录 1.指标解释 revenue :用户的下单购买金额 3rd_party_stores: 用户过往在app中从第三方商家购买的数量, ...

  4. python创建变量过程_Python 变量的创建过程详解

    一.变量创建过程 首先,当我们定义了一个变量name = 'Kwan'的时候,在内存中其实是做了这样一件事: 程序开辟了一块内存空间,将'Kwan'存储进去,再让变量名name指向'Kwan'所在的内 ...

  5. python创建变量_Python每天一分钟:给类对象动态新增/删除成员变量和方法(函数)...

    一般类对象新增变量或方法的过程 在面向对象(OOP)的编程方法中,如果需要给实例化的类对象新增方法或者属性,一般都是在class类的定义中新增内容,然后才能用类对象来调用新增的方法或变量.如在C++中 ...

  6. python创建变量score_使用Python 3.5.1中的变量创建文件时的FileNotFoundError

    我正在尝试使用Python中的变量创建一个文件,但它不会拥有它. 以下是创建文件名的代码: a, b = time.strftime("%d/%m/%Y"), time.strft ...

  7. python创建变量并赋值_python怎么给变量赋值

    在学习变量及赋值之前,我们要知道什么是变量! Python语言中,用等号[=]来表示赋值,Python赋值并不是直接将一个值赋值给一个变量,在Python中,对象是通过引用传递的:在传递时,不管这个对 ...

  8. python创建变量_【转载】 Python动态生成变量

    用Python循环创建多个变量, 如创建 a1= .a2= .a3= .a4= .a5= 或 self.a1= .self.a2= . self.a3= 一. 可以通过python的内置函数local ...

  9. python创建变量score_关于Python创建类时的self参数和__init__

    __init__: 初始化函数,相当于构造函数. 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去.通过定义一个特殊的__init__方法,在创建实例的时 ...

最新文章

  1. RFID技术助力提升衣物租借效率
  2. 理解Java的封装与接口
  3. linux系统结构与文件管理命令
  4. matlab中欠定方程组超定方程组_七年级下册第10章:认识二元一次方程组(1课时)...
  5. 如何选择你所需的×××产品
  6. HTML+CSS+JS 表白代码
  7. 集群节点列表编辑程序
  8. 滴滴开源夜莺 Nightingale:企业级监控解决方案
  9. 一个有趣手绘风格的Python绘图库使用
  10. C语言游戏开发——打飞机游戏1.0
  11. 秩和检验的概念及python实现
  12. 【JZOJ6091】唐时月夜
  13. 创意简约中国风新年快乐牛年大吉通用PPT模板
  14. DWG中注记类型属性转换
  15. 华硕灵耀pro16参数 华硕灵耀pro16怎么样
  16. 用户研究:深度解析用户画像
  17. OpenCV Mat与uchar*指针相互转换赋值
  18. 什么样的人适合参加IT编程培训?
  19. 【CC】| 创建三维模型教程
  20. windows7 安装哪个版本的vs_门套安装45度拼接VS直角拼接,哪个更好?

热门文章

  1. 影像组学视频学习笔记(32)-使用SimpleITK进行N4偏置场校正、Li‘s have a solution and plan.
  2. R语言apply族函数
  3. Python踩坑指南(第二季)
  4. 揭晓你所不了解的第三代测序技术
  5. 高通量测序技术的原理及各平台优势和实践应用的分析
  6. 新一代测序技术Sparc
  7. 3dsmax 长动画导入 three.js 转变成 多个动画
  8. python 列表、字典转json字符串
  9. 飞机大战html游戏全代码js、jquery操作
  10. 多视角图像生成--Multi-View Image Generation from a Single-View