python商业数据分析统计服_Python数据分析实例-统计学在解决奶茶店问题中的应用...

作为数据分析师,除了熟练各种分析工具外,更重要的是分析、解决问题的能力以及扎实的数学功底,尤其是统计学。

本文将用一个例子,一步一步展示1)分析问题的步骤,2)更具需求选择合适工具和数据获取,3)和统计学知识在实例中的运用。

本文涉及例子和数据纯属虚构,如有雷同纯属巧合。

商业问题:是否需要多招一个奶茶工?

我的朋友小文在大学城开了一个奶茶店。由于开在大学城,奶茶店生意稳定,从周一到周日生意都差不多。现在奶茶店里有2个员工做奶茶,而点单则是由自助点单机器负责。一天小文去店里看运营情况,收到顾客反映等待时间太久,希望奶茶店再招些员工让等待时间短一些。考虑到工资成本,小文找到我让我帮助分析下是否需要再招个人,如果我可以出一个让他信服的商业分析报告,他就免费送我20杯奶茶的礼券。那我肯定不能错过这个免费喝奶茶的机会,于是和小文了解了奶茶店的情况后制定了以下分析步骤:分析、理解问题

获取、导入数据

数据清洗

数据分析与可视化

构建模型

总结

1. 分析、理解问题

与小文交流后,我把小文的问题“是否需要再招一个奶茶工?”转换成以下问题:为了提高顾客满意度,分析决定是否有95%的顾客实际等待时间超过他们的预期等待时间,如果是则小文需要至少再招一个人。

量化问题是解决问题的重要步骤之一。也就是说,需要量化等待时间来决定是否多招人,而不是因为有几个顾客反映等待时间过长的反馈进行决策。要解决等待时间是否过长需要2个数据指标:1)目标指标,95%顾客的可接受等待时间。2)客观计算或测量数据,95%的顾客的实际等待时间。

首先要确定目标指标。 这里95%顾客可接受等待时间是值顾客的心里预期,所以需要顾客主观给出一个认为可以接收的等待时间,而如果等待时间过长,久而久之等待时间过长的顾客就可以去其他奶茶店买奶茶了。因此,我决定使用15分钟或者以下。这里到了一些常用统计学知识,可以通过这篇文章了解为什么可以用样本去估计整体?以及这个回答,为什么设置95%?

下一步需要选择合适的方法得到顾客实际等待时间,我们可以通过以下方法:使用数学公式计算。对于如此多步骤的复杂问题,我们很难使用数据公式求解,因此使用数学公式不是合适选项。

实地测量顾客等待时间。实地测量是非常耗时耗力的,对于付出(一周甚至是更久的实地测量)回报(20杯奶茶)比来说,实地测量不是一个好的选择。

利用模拟实验得到等待时间。模拟实验是指使用代码来模拟当前卖奶茶的流程,并通过模拟实验模拟顾客的等待时间,如果模拟实验的数据能真实可靠地获得,那模拟实验就能很好地模拟真实情况。举个简单的例子理解模拟实验:一个袋子里有3个小球,一个红球,两个白球。问随便从袋子中取一个球,取到红球的概率。使用Python进行模拟实验可以使用以下代码。

import random

import numpy as np

# 模拟一个袋子,一个红球red,两个白球white

pocket = ['red', 'white', 'white']

# 记录每次摸球结果的列表

lst_result = []

# 模拟摸球1000000次

for t in range(1_000_000):

lst_result.append(random.choice(pocket))

# 计算1000000次摸球中,摸到红球的比例。

lst_result = np.array(lst_result)

print((lst_result== 'red').sum()/len(lst_result))0.333253

可以看到在一瞬间计算机就能进行一百万次模拟实验,最终得到摸到红球的概率是0.333253,所以在大量的模拟实验下,最终结果是非常接近真实结果的。其实对于这个简单的例子,概率公式1/3就能得到结果,但是对于卖奶茶的流程,不是简单的数学公式能计算出来的,而模拟实验正好能发挥他的作用。

接下来要衡量模拟实验的可行性。第一,整理卖奶茶的流程。下图为卖奶茶流程图:第二,检查数据是否可取得。

通过流程整理,我们知道模拟的第一步是模拟订单数据,那就需要历史订单数据。通过分析历史订单数据,我们可以得出规律并生模拟新的订单数据(主要是订单生成时间,和每单奶茶杯数)。

然后模拟第二步订单进入等待队列,产生的等待时间为t1,如果员工空闲那就可以立刻开始订单,此时t1=0。

模拟第三步员工制作奶茶,这时候需要每个员工制作奶茶的时间数据,并根据这一数据生成每杯奶茶的制作时间的模拟数据,而制作奶茶的时间为t2。最终就能得到每个订单的模拟等待时间t1+t2。

所以只要得到历史订单数据,和员工做每杯奶茶的时间就可以进行模拟。历史订单数据非常容易取得,只要从奶茶店销售系统中调取。员工做奶茶的时间并没有现成数据,于是我和小文商量了只要提供2个电子计时器,每次员工只要在开始和结束奶茶制作的时候按下计时器,就能得到奶茶制作时间。

经过以上思考,我们总结下问题。

解决的问题:为了提高顾客满意度,分析是否有95%的顾客实际等待时间超过他们的预期等待时间,来决定是否招人。

量化指标:1)95%顾客的预期等待时间。2)95%顾客的实际等待时间

方法选择:1)问卷调查获取顾客预期等待时间。2)模拟实验模拟实际等待时间。

数据需求:1)历史订单数据。2)收集员工做每杯奶茶的时间。

问题前提和假设:1)等待时间不包括点单时间,员工走动取单和送奶茶时间,只计算等待时间t1和奶茶制作时间t2作为总等待时间。2)期间没有任何促销,平均客流量稳定。3)顾客之间相互独立,即每位顾客来买奶茶不受其他顾客影响。4)员工做奶茶已经娴熟,做每杯奶茶的平均时间长期稳定,并且不同类型的奶茶平均制作时间一样。5)员工接到订单后完成整个订单,比如一个订单需要做3杯奶茶,则由一个员工完成所有奶茶。

2. 获取、导入数据

模拟实验用到了2个数据集-历史订单数据和员工做每杯奶茶的时间。这两个数据集是使用Python模拟的数据,非真实数据。

from collections import deque

from datetime import datetime

from scipy.stats import poisson, norm

from scipy.in

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值