4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Procter&Gamble业务数据分析Python实战_安卡是只喵的博客-CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-24

Procter Gamble业务数据表的主要字段
以月为观测窗口
revenue 门店销售额
reach 微信推送次数
local_tv 本地电视公告投入
online 线上广告投入
instore 门店内海报陈列等投入
person 门店销售人员投入
event 促销事件
1 cobrading 品牌联合促销
2 holiday 节假日
3 special 门店特别促销
4 non_event 无促销活动

要分析的问题 针对revenue销售额建立回归预测模型 探究revenue和其他因素的相关关系 并对于所建立的模型进行效果评估和优化。

打开Python 开始敲代码
首先导入相关的库和数据

import pandas as pdimport seaborn as snsfrom matplotlib import pyplot as pltfrom sklearn.linear_model import LinearRegression%matplotlib inline#如果用df pd.read_csv(r store_rev.csv 导入数据 python会自动加上一列编号。#所以在read_csv()中加上index_col 0 可以去掉这类编号。df pd.read_csv(r store_rev.csv ,index_col 0)df.head() #查看前五行的数据

\"在这里插入图片描述\"

#查看数据概况df.describe()

\"在这里插入图片描述\"

#查看是否存在缺失值#运行可知 local_tv存在56个缺失值df.isnull().sum()

\"在这里插入图片描述\"

#了解数据的大小分布#判断数据是否符合业务场景 数据是否真实df.describe()

\"在这里插入图片描述\"
易知
local_tv 缺失了56个值 缺失值较少 这里用均值填充。
event是类别型变量 要用get_dummies()转换成数值型变量。

#用均值填充local_tv缺失值#如果这里不处理缺失值 后面建模会出现报错。df df.fillna(df.local_tv.mean())
##获取event中的所有不重复的值df.event.unique() 

\"在这里插入图片描述\"

#查看不同event的销售额情况 分组聚合df.groupby([ event ])[ revenue ].describe()

\"在这里插入图片描述\"

#哑变量处理get_dummies 将event类别型数据转换成数值型数据 并和df表拼接在一起concat()a pd.get_dummies(df[ event ])df pd.concat([df,a],axis 1)df.head()

\"在这里插入图片描述\"

#删除多余的变量del df[ event ]del df[ non_event ]df.head()

\"在这里插入图片描述\"

数据预处理完成。
接下来进行相关性分析

#表中所有变量 任意2个变量分析 表名.corr()df.corr()

\"在这里插入图片描述\"

#只取revenue的相关系数#sort_values()排序 ascending默认升序 ascending False代表降序#系数越接近于1 说明相关性越强。为负数说明相关性很弱 不要过度解读df.corr()[[ revenue ]].sort_values( revenue ,ascending False)

\"在这里插入图片描述\"
接下来进行线性关系可视化

#斜率与相关系数有关#local_tv和revenue相关关系图sns.regplot( local_tv , revenue ,df)

\"在这里插入图片描述\"

#person和revenue相关关系图sns.regplot( person , revenue ,df)

\"在这里插入图片描述\"

sns.regplot( instore , revenue ,df)

\"在这里插入图片描述\"
然后开始建模
首先用local_tv person instore三个自变量建立关于revenue的模型

model LinearRegression() #建立一个空的线性回归现象
X df[[ local_tv , person , instore ]]Y df[ revenue ]model.fit(X,Y)

\"在这里插入图片描述\"

#输出各自变量的相关系数print(model.coef_)#输出截距print(model.intercept_)

\"在这里插入图片描述\"
建立的回归模型为
revenue -52881.12439058924 1.75local_tv 2.05person 4.09*instore
结论 每提升1元的电视公告投入 可以得到1.75元的销售回报
每提升1元的店内海报投入 可以实现4.09的销售回报

对于建立的模型进行预测效果评估和优化

#模型的评估score model.score(X,Y) #X和Y打分predictions model.predict(X) #计算Y的预测值error predictions-Y #计算误差rmse (error**2).mean()**.5 #计算rmsemae abs(error).mean() #计算maeprint(rmse)print(mae)

\"在这里插入图片描述\"

#模型的迭代优化 加入新的自变量onlinemodel_new LinearRegression() #建立一个空的线性回归现象x_new df[[ local_tv , person , instore , online ]]y_new df[ revenue ]model_new.fit(x_new,y_new)
#输出新模型自变量的相关系数和截距print(model_new.coef_)print(model_new.intercept_)

\"在这里插入图片描述\"
建立的优化模型为
revenue -58650.545689192215 1.75local_tv 2.03person 4.14instore 3.70online

score_new model_new.score(x,y) #X和Y打分predictions_new model_new.predict(x) #计算Y的预测值error_new predictions_new-y #计算误差rmse_new (error_new**2).mean()**.5 #计算rmsemae_new abs(error_new).mean() #计算maeprint(rmse_new)print(mae_new)

\"在这里插入图片描述\"
结论 优化之后的模型误差较小 预测效果更好

补充说明
如果想看到标准的模型输出表 可以用ols方法评估模型效果

from statsmodels.formula.api import ols#model是前面建立的第一个模型model ols( Y~X ,df).fit()#观察coef系数 P值显著性print(model.summary())

\"在这里插入图片描述\"

#model_new是优化模型model_new ols( y_new~x_new ,df).fit()#观察coef系数 P值显著性print(model_new.summary())

\"在这里插入图片描述\"
R-squared越大 AIC值越小 说明模型的拟合效果更好。
结论 相对于建立的第一个模型 优化的模型预测拟合效果更好。

知识点小结

建立回归模型
from sklearn.linear_model import LinearRegression

model LinearRegression() #建立一个空的线性回归现象

x 表名[[‘自变量A’,‘自变量B’,……]]
y 表名[‘因变量’]
model_new.fit(x,y)

#输出各自变量的相关系数和截距
print(model.coef_)
print(model.intercept_)

模型的评估
1 误差法
rmse和mae误差越小 模型拟合效果越好
score model.score(X,Y) #X和Y打分
predictions model.predict(X) #计算Y的预测值
error predictions-Y #计算误差

rmse (error2).mean().5 #计算rmse
mae abs(error).mean() #计算mae

print(rmse)
print(mae)

2 拟合系数法
R-squared越大 AIC值越小 模型的拟合效果越好。
from statsmodels.formula.api import ols

model ols(‘y~x’,表名).fit()
print(model.summary())

\"\" \"\" \"\" 点赞 \"\" \"\" 评论 2

本文链接: http://proctergambleco.immuno-online.com/view-700647.html

发布于 : 2021-03-24 阅读(0)
公司介绍
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://