小案例(四):销售额下滑(python)

时间:2022-05-07
本文章向大家介绍小案例(四):销售额下滑(python),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

案件回顾

饭团销售额下滑

  1. 酒馆的热销菜品之一饭团,近几个月销量比去年同期少了约2成
  2. 酒馆给出了47种菜品,三个月内每天的销售数据(问题:什么原因导致了饭团销量的下降?)
  • 菜品销量变化分析

将数据存储为csv格式,导入python。为了直观的看看饭团销售额的时间序列,画出饭团3个月内的销售额时间序列图。

menus.日期 = pd.to_datetime(menus.日期) import matplotlib.pyplot as plt import pylab menus.index = menus.iloc[:,1] menus.loc[menus.品名=='饭团'].iloc[:,2].plot() plt.ylabel("销售额") pylab.show()

时间序列图,即横轴代表时间轴的图。从图中可以看出,4月份以后,折线整体呈下降趋势,即销售额下降。折线波动的很厉害,因为周末销售额会上涨。再看看炒饭的销售情况。

menus.loc[menus.品名=='炒饭'].iloc[:,2].plot() plt.ylabel("销售额") pylab.show()

从图中可直观看出,炒饭的销售额波动一样厉害,但是整体没有向上或向下的趋势。再看面条类的销售情况。

menus.loc[menus.品名=='意大利面'].iloc[:,2].plot(label='意大利面') menus.loc[menus.品名=='酱汁炒面'].iloc[:,2].plot(label='酱汁炒面') menus.loc[menus.品名=='乌冬面'].iloc[:,2].plot(label='乌冬面') menus.loc[menus.品名=='什锦面'].iloc[:,2].plot(label='什锦面') menus.loc[menus.品名=='拉面'].iloc[:,2].plot(label='拉面') plt.ylabel("销售额") plt.legend() pylab.show()

从图上可以看出,5种面条,从4月份开始,每种的销售额都涨了一点。一般来说,很少人米饭面条会一起点,所以一边增加了,另一边减少也很正常。虽然看上去饭团的销售额与面条的销售额有关系,但是饭团销售额下降的原因真的是因为面条吗?两者之间其实是一种伪相关,因为他们不属于因果关系,应该是由其他某种原因导致的这两者销售额的变化。通过散点图,可以得到各种食品两两比对后的结果,判断是否有相关性。其中,从散点图可以看到饭团和牛奶间存在明显的负相关。

plt.scatter(menus.loc[menus.品名=='饭团'].iloc[:,2],menus.loc[menus.品名=='牛奶'].iloc[:,2]) plt.xlabel("饭团") plt.ylabel("牛奶") pylab.show()

在实际生活中,饭团与牛奶间不存在替代关系,即不应该出现两者的负相关关系,因此图像显示的情况与实际有出入。再来看牛奶的销售情况图。

menus.loc[menus.品名=='牛奶'].iloc[:,2].plot() plt.ylabel("销售额") pylab.show()

从图中可看出,牛奶的销售量从4月份开始,突然上涨明显。调查原因发现,酒馆进了一种米奶,也就是稀粥,与饭团产生了替代关系,导致饭团销量减少。

  • 几个小概念

相关系数:观察散点图,如果点从左下到右上呈带状分布,那么两个数据就是正相关。如果是从左上到右下分布,就是负相关。但这只是根据肉眼进行的判断,有时候用数字判断比用图判断更好。比如计算牛奶和饭团销售额的相关系数。

a = menus.loc[menus.品名=='牛奶'].iloc[:,2] b = menus.loc[menus.品名=='饭团'].iloc[:,2] c = pd.concat([a,b],axis=1) c.columns = ['牛奶','饭团'] c.corr()

结果为:

牛奶饭团牛奶1.000000-0.574642饭团-0.5746421.000000

相关系数代表了2组数据之间的线性关系强弱,取值范围为[-1,1],越接近1意味正相关性越高,越接近-1意味着负相关性越高。从计算结果可以看出,牛奶和饭团呈弱负相关性。

后台回复“热销品”,可获得本例中数据


机器学习养成记