• 本文来自《Python数据分析从入门到精通》——明日科技编著
  • 随着电商行业的激烈竞争,电商平台推出了各种数字营销方案,付费广告也是花样繁多。那么电商投入广告后,究竟能给企业增加多少收益,对销量的影响究竟有多大,是否满足了企业的需求,是否达到了企业的预期效果。针对这类问题企业将如何应对和处理,而不是凭直觉妄加猜测。

12.1 概述

  • 某电商投入了几个月的广告费,收益还不错,未来6个月计划多投入一些广告,那么多投入的广告能给企业带来多少收益?为此,我们用Python结合科学的统计分析方法对某电商的销售收入和广告费数据进行了分析与预测,首先探索以往销售收入和广告费两组数据间的关系,然后进行销售收入的预测。

12.4 分析方法

  • 经过对某电商销售收入和广告费的分析后,得知这两组数据存在一定的线性关系,因此我们采用线性回归的分析方法对未来6个月的销售收入进行预测。
  • 线性回归包括一元线性回归和多元线性回归。

12.5 项目实现过程

  • 用Python编写程序实现某电商销售收入的预测,首先分析某电商销售收入和广告费数据,然后通过折线图、散点图判断销售收入和广告费两组数据的相关性,最后实现销售收入的预测。

12.5.1 数据处理

  • 某电商存在以下两组历史数据并分别存在两个Excel文件中:一个是销售收入数据;另一个是广告费数据。在分析预测前,首先要对这些数据进行处理,提取与数据分析相关的数据。
  • 例如,销售收入分析只需要“日期”和“销售码洋”,关键代码如下:
df=df[['日期','销售码洋']]

12.5.2 日期数据统计并显示

  • 为了便于分析每天和每月销售收入数据,需要按天、按月统计Excel表中的销售收入数据,这里主要使用Pandas中的DataFrame对象的resample()方法和to_period()方法实现日期数据的统计并显示:
import pandas as pd
import matplotlib.pyplot as plt
df= pd.read_excel('.\data\销售表.xlsx')
df=df[['日期','销售码洋']]
df['日期'] = pd.to_datetime(df['日期'])    #将日期转换为日期格式
df1= df.set_index('日期',drop=True)        #设置日期为索引,并删除原来的日期列
df1

#按天统计销售数据
df_d=df1.resample('D').sum().to_period('D')
df_d

#按月统计销售数据
df_m=df1.resample('M').sum().to_period('M')
df_m

df_d.to_excel('result1.xlsx') #导出结果
df_m.to_excel('result2.xlsx') #导出结果

12.5.3 销售收入分析

#图表字体为黑体,字号为10
plt.rc('font', family='SimHei',size=10)
#绘制子图
fig = plt.figure(figsize=(9,5))
ax=fig.subplots(1,2)   #创建Axes对象
#分别设置图表标题
ax[0].set_title('按天分析销售收入')
ax[1].set_title('按月分析销售收入')
df_d.plot(ax=ax[0],color='r')             #第一个图折线图
df_m.plot(kind='bar',ax=ax[1],color='g')  #第二个图柱形图
#调整图表距上部和底部的空白
plt.subplots_adjust(top=0.95,bottom=0.15)
plt.show()

12.5.4 销售收入与广告费相关性分析

  • 在使用线性回归方法预测销售收入前,需要对相关数据进行分析。那么,单纯从数据的角度很难发现其中的趋势和联系,而将数据绘制成图表后,趋势和联系就会变得清晰起来。
  • 下面通过折线图和散点图来看一下销售收入与广告费的相关性。

1.折线图

  • 为了更清晰地对比广告费与销售收入这两组数据的变化和趋势,我们使用双y轴折线图,其中主y轴用来绘制广告费数据,次y轴用来绘制销售收入数据。通过折线图可以发现,广告费和销售收入两组数据的变化和趋势大致相同,从整体的趋势来看,广告费和销售收入两组数据都呈现增长趋势。从规律性来看广告费和销售收入数据每次的最低点都出现在同一个月。从细节来看,两组数据的短期趋势的变化也基本一致。
import pandas as pd
import matplotlib.pyplot as plt
df1= pd.read_excel('.\data\广告费.xlsx')
df2= pd.read_excel('.\data\销售表.xlsx')
print(df1.head())
print(df2.head())

df1['投放日期'] = pd.to_datetime(df1['投放日期'])
df1= df1.set_index('投放日期',drop=True)
df2=df2[['日期','销售码洋']]
df2['日期'] = pd.to_datetime(df2['日期']) #日期数据转换,https://blog.csdn.net/Triumph19/article/details/125634597
df2= df2.set_index('日期',drop=True)
# 按月统计金额
df_x=df1.resample('M').sum().to_period('M')
df_y=df2.resample('M').sum().to_period('M')
#x为广告费,y为销售收入
y1=pd.DataFrame(df_x['支出'])
y2=pd.DataFrame(df_y['销售码洋'])
fig = plt.figure()
# 图表字体为黑体,字号为11
plt.rc('font', family='SimHei',size=11)
ax1 = fig.add_subplot(111)                  #添加子图
plt.title('京东电商销售收入与广告费分析折线图')         #图表标题
#图表x轴标题
x=[0,1,2,3,4,5,6,7,8,9,10,11]
plt.xticks(x,['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'])
ax1.plot(x,y1,color='orangered',linewidth=2,linestyle='-',marker='o',mfc='w',label='广告费')
plt.legend(loc='upper left')
ax2 = ax1.twinx()                           #添加一条y轴坐标轴
ax2.plot(x,y2,color='b',linewidth=2,linestyle='-',marker='o',mfc='w',label='销售收入')
plt.subplots_adjust(right=0.85)
plt.legend(loc='upper center')
plt.show()

2.散点图

  • 对比折线图,散点图更加直观。散点图去除了时间维度的影响,只关注广告费和销售收入两组数据间的关系。在绘制散点图之前,我们将广告费设置为x,也就是自变量,将销售收入设置为y,也就是因变量。下面根据每个月销售收入和广告费数据绘制散点图,x轴是自变量广告费数据,y轴是因变量销售收入数据。从数据点的分布情况可以发现,自变量x和因变量y有着相同的变化趋势,当广告费增加后,销售收入也随之增加。
import pandas as pd
import matplotlib.pyplot as plt
df1= pd.read_excel('.\data\广告费.xlsx')
df2= pd.read_excel('.\data\销售表.xlsx')
df1['投放日期'] = pd.to_datetime(df1['投放日期'])
df1= df1.set_index('投放日期',drop=True)
df2=df2[['日期','销售码洋']]
df2['日期'] = pd.to_datetime(df2['日期'])
df2= df2.set_index('日期',drop=True)
# 按月统计金额
df_x=df1.resample('M').sum().to_period('M')
df_y=df2.resample('M').sum().to_period('M')
#x为广告费,y为销售收入
x=pd.DataFrame(df_x['支出'])
y=pd.DataFrame(df_y['销售码洋'])
# 图表字体为黑体,字号为11
plt.rc('font', family='SimHei',size=11)
plt.figure("京东电商销售收入与广告费分析散点图")
plt.scatter(x, y,color='r')     #真实值散点图
plt.xlabel(u'广告费(元)')
plt.ylabel(u'销售收入(元)')
plt.subplots_adjust(left=0.15)  #图表距画布右侧之间的空白
plt.show()

  • 通过折线图和散点图清晰地展示了广告费和销售收入两组数据,让我们直观地发现了数据之间隐藏的关系,为接下来的决策做出重要的引导。经过折线图和散点图分析后,就可以对销售收入进行预测,进而做出科学的决策,而不是模棱两可,大概差不多。

12.5.5 销售收入预测

import pandas as pd
from sklearn import linear_model
import matplotlib.pyplot as plt
import numpy as np
df1= pd.read_excel('.\data\广告费.xlsx')
df2= pd.read_excel('.\data\销售表.xlsx')
#数据处理
df1['投放日期'] = pd.to_datetime(df1['投放日期'])
df1= df1.set_index('投放日期',drop=True)
df2=df2[['日期','销售码洋']]
df2['日期'] = pd.to_datetime(df2['日期'])
df2= df2.set_index('日期',drop=True)
#按月统计金额
df_x=df1.resample('M').sum().to_period('M')
df_y=df2.resample('M').sum().to_period('M')
clf=linear_model.LinearRegression()   #创建线性模型
#x为广告费,y为销售收入
x=pd.DataFrame(df_x['支出'])
y=pd.DataFrame(df_y['销售码洋'])
clf.fit(x,y) #拟合线性模型
k=clf.coef_  #获取回归系数
b=clf.intercept_ #获取截距
#未来6个月计划投入的广告费
x0=np.array([120000,130000,150000,180000,200000,250000])
x0=x0.reshape(6,1)    #数组重塑
#预测未来6个月的销售收入(y0)
y0=clf.predict(x0)
print('预测销售收入:')
print(y0)

#使用线性模型预测y值
y_pred =clf.predict(x)
# 图表字体为华文细黑,字号为10
plt.rc('font', family='SimHei',size=11)
plt.figure("京东电商销售数据分析与预测")
plt.scatter(x, y,color='r')                     #真实值散点图
plt.plot(x,y_pred, color='blue', linewidth=1.5) #预测回归线
plt.ylabel(u'销售收入(元)')
plt.xlabel(u'广告费(元)')
plt.subplots_adjust(left=0.2)                   #设置图表距画布左边的空白
plt.show()

12.5.6 预测评分

  • 评分算法为准确率,准确率越高,说明销售预测的销售收入效果越好。
  • 下面使用Skikit-Learn提供的评价指标函数metrics()实现回归模型的评估,主要包括以下四种方法。
  • explained_variance_score:回归模型的方差得分,取值为0~1
  • mean_absolute_error:平均绝对误差。
  • mean_squared_error:均方差。
  • r2_score:判定系数,解释回归模型的方差得分,取值为0~1
  • 下面使用r2_score()方法评估回归模型,为预测结果评分。如果评分结果是0,则说明预测结果跟盲目猜测差不多;如果评分结果是1,则说明预测结果非常准;如果评分结果是0~1的数,则说明预测结果的好坏程度;如果结果是负数,则说明预测结果还不如盲目猜测,而导致这种情况的原因是数据没有线性关系。
  • 假设为了6个月实际销售收入分别是360000,450000,600000,800000,920000,1300000,程序代码如下:
#预测评分
from sklearn.metrics import r2_score
y_true = [360000,450000,600000,800000,920000,1300000]# 真实值
score=r2_score(y_true,y0)  # 预测评分
print(score)

  • 从输出结果看,说明预测结果非常好。

12.6 小结

  • 本章融入了数据处理、可视化图表、数据分析和机器学习相关知识。通过本章项目的实践,进一步巩固和加深了前面所学知识,并进行了综合应用。例如在掌握相关性分析和线性回归分析方法的结合,为数据预测提供了有效的依据。通过实际项目的应用,掌握了Scikit-Learn线性回归模型,为日后的数据分析工作奠定了坚实的基础。

电商销售数据分析与预测(日期数据统计、按天统计、按月统计)相关推荐

  1. 【python】【数据分析】2022年全国大学生数据分析大赛题解-医药电商销售数据分析

    文章目录 一.前言 二.题目 三.题解 1.对店铺进行分析,一共包含多少家店铺,各店铺的销售额占比如何?给出销售额占比最高的店铺,并分析该店铺的销售情况. 2.对所有药品进行分析,一共包含多少个药品, ...

  2. 2022全国大学生数据分析大赛A题完整解题教程及代码 医药电商销售数据分析

    题目 A:医药电商销售数据分析 完整解题 随着国家政策的逐步开放,越来越多的药品可以在网络上购买, 医药电商平台蒸蒸日上,受新冠疫情的影响,线下药店购买困难,更 让医药电商进入了更多消费者的视野,各大 ...

  3. 日用品电商销售数据分析

    分析报告结论: 1.日用品办公文具的整体销售情况数据持续上升可观,但是对于用户个体的销售金额和商品购买量及次数都集中在区间的低段水平,所以对于此类交易群体,可在丰富日用品产品线例如针对儿童,年轻群体( ...

  4. 2022全国大学生数据分析大赛A题-医药电商销售数据分析

    新手参加比赛,不足之处敬请谅解 题目链接:链接:https://pan.baidu.com/s/1ll7Y1kTr1MiJTjErwnqiVA  提取码:zu9f 目录 任务1 对店铺进行分析 任务1 ...

  5. python商业数据分析报告范文_python案例分析之电商销售数据分析

    import pandas as pd #读取文件 data= pd.read_csv('./dataset.csv') ########################### 查看数据概览 #### ...

  6. 掌握电商数据的4个要点,电商平台数据分析其实很简单

    从近两年爆火的淘宝网红直播再到抖音由社交到电商的转变,不难看出电商行业迎来了又一次升级,从原来的图文时代升级到了直播时代,从原来的以"货"为中心开始转向以"人" ...

  7. 电商平台销售数据评测智能手表|数据分享

    " 智能手机的笨拙已经不能满足消费者解放双手的需求.因此,便于携带的智能手表受到了消费者的青睐,而技术的不断创新也使得智能手表的功能越来越强大,转变甚至取代了智能手机的功能. " ...

  8. 某电商平台数据分析报告(2)

    某电商平台数据分析报告(2) 1.分析背景:某电商平台现有2016全年销售数据. 数据来源:互联网 2.分析思路:整体运营情况(GMV,实际支付总额,客单价,订单数,用户数),销售趋势(销售全年走势, ...

  9. 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据

    全新大数据企业电商数据仓库项目实战教程 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业.拥有丰 ...

最新文章

  1. hdu2489-DFS+最小生成树
  2. Windows下nginx-http-flv-module编译
  3. 解决Eclipse中文乱码
  4. php学习_数组 2013.01.04
  5. java怎么处理ajax请求,java怎么用ajax请求?jquery ajax请求后台的简单例子
  6. Oracle中判断字段是否为数字
  7. win7 64位系统下载
  8. 云服务器远程桌面复制
  9. CAD图纸打印出来后很多CAD文字消失了怎么办?
  10. 某程序员披露华为外包员工现状:工作氛围好,没有歧视,但转正后也不算正式员工?...
  11. matlab 图像锐化 梯度 原理,Matlab梯度法图像锐化
  12. PS使用技巧(一) 移动工具 V
  13. Python数据分析与挖掘实战第三章笔记之贡献度分析代码
  14. python人工智能入门书籍推荐-有哪些关于人工智能的书籍可供推荐?
  15. 西门子840d高级编程手册_斯沃系统手册--西门子高级编程手册_840D_810Di_810D_FM_NC高级篇.pdf...
  16. 什么是迭代式项目开发
  17. mysql outer apply_CROSS APPLY和 OUTER APPLY 区别详解
  18. 计时函数(基本知识)
  19. Free C/C++ Libraries(免费的C/C++库)
  20. Matlab绘制多组柱状图的方法(可直接复制)

热门文章

  1. Android幸运大转盘
  2. 基础加强 -- 反射
  3. php7安装详解(windows环境)
  4. PW系列 | 用windres 编译.rc 资源文件
  5. 生日悖论的泛化问题的讨论
  6. 难处理的js单引号与双引号问题解决
  7. 网站日访问量,在线用户数,等如何统计?
  8. 浏览器 unload beforunload事件不触发
  9. 【渝粤教育】国家开放大学2018年春季 0049-22T法律文书 参考试题
  10. mysql数据库锁 栅栏,如何使用MySQL查找多边形地理围栏中包含的点