论做一个会数据分析的服务生的重要性

281 阅读3分钟

python版本3.5.2

数据集忘了哪里拿来的了

首先读一下数据,看看有哪些字段

import pandas as pd
import numpy as np
import matplotlib.pylab as plt

data = pd.read_csv('/Users/jinniu/Desktop/study/PriticeData/tips.csv')
data.head()
"""
	       total_bill	tip	    sex	    smoker	    day	    time	size
    0	        16.99	        1.01	    Female	No	    Sun	    Dinner	2
    1	        10.34	        1.66	    Male	No	    Sun	    Dinner	3
    2	        21.01	        3.50	    Male	No	    Sun	    Dinner	3
    3	        23.68	        3.31	    Male	No	    Sun	    Dinner	2
    4	        24.59	        3.61	    Female	No	    Sun	    Dinner	4
"""

先看下相关性,找个软柿子捏捏

#相关性
corr = data.corr()
"""
                    total_bill    tip       size        tips_pct
    total_bill      1.000000    0.675734    0.598315    -0.338624
    tip             0.675734    1.000000    0.489299    0.342370
    size            0.598315    0.489299    1.000000    -0.142860
    tips_pct        -0.338624    0.342370    -0.142860    1.000000
"""

可以看出小费和小费金额是比较强的相关性,虽然小于0.8,但是相关程度也挺高的,所以,一场饭局如果消费越高,小费也就越高,但是注意到小费所占消费的百分比是中度的负相关,这个我们放到后面看看

先看看百分比的柱状图,貌似小费的百分比都集中在10%到20%之间

如果是这样的话那我们再看看散点图

plt.plot(data['total_bill'],data['tip'],'o')
plt.show()

可以看到,其实在30块以后相关性就比较差了,所以30块是一个分水岭,那么我们的主攻方向就可以确定为30块的消费人群了

说起来一般出去吃饭局的大老板都抽烟,那么不知道抽烟的男女对小费有没有影响? 这里我们用透视来看看,因为我们要关注的是性别和吸烟情况,所以行索引我们用list传入

#性别和吸烟对小费的影响
man_tip = data.pivot_table(index=['sex','smoker'],aggfunc='mean')
"""
                        size        tip         tips_pct    total_bill
    sex    smoker
    Female    No        2.592593    2.773519    0.156921    18.105185
              Yes       2.242424    2.931515    0.182150    17.977879
    Male      No        2.711340    3.113402    0.160669    19.791237
              Yes       2.500000    3.051167    0.152771    22.284500
"""

哦吼?!有意思!女性的消费会低于男性消费,果然是男的赚的多吗?另外,吸烟的女性出手都比较大方,而不吸烟的女性相对的就没那么大方,而男性则比较稳定,没有女性偏差那么大,但是男性刚好相反,不抽烟的小费给的多,抽烟的小费给的少。可是男性的小费比例是全面低于女性的,说明男性在购物消费方面不如女性出手大方

所以攻略点2:找抽烟的女性买单

接下来看看人数对我们的收益有没有影响

#人数对小费的影响
tip_size = data.pivot_table(index='size',aggfunc='mean')
"""
            tip    tips_pct    total_bill
    size
    1    1.437500    0.217292    7.242500
    2    2.582308    0.165719    16.448013
    3    3.393158    0.152157    23.277632
    4    4.135405    0.145949    28.613514
    5    4.028000    0.141495    30.068000
    6    5.225000    0.156229    34.830000
"""

除去一个人的情况,人数的多少根小费貌似没有多大关系,都浮动在0.15这个位置,真的是如此吗?画个散点图看看

#画个散点图
plt.plot(data['size'],data['tips_pct'],'o')
plt.show()

嗯……跟之前的结果差不多嘛?那再看看相关性

#看下tips_pce和人数的相关性
size_corr = data['size'].corr(data['tips_pct'])
#-0.14285960069312365  

弱相关,人数越多可能小费百分比越少,这么低的相关性,可能真的是没什么关系了,看来人数的增加对我们的收益没有什么影响,都是在0.15左右

但是真的如此吗???? 别忘了我们统计的是百分比,百分比在这边是说明不了什么的,因为我们拿的是实实在在的钱!!!

我们要看的是小费和人数的关系!!!!

#看下人数和小费的关系
size_corr2 = data['size'].corr(data['tip'])
#0.48929877523035775   

果然!!!0.48929877523035775

中等相关!所以可以看出人数越多消费越多,但是给的小费占比略微减少,即便如此,拿到的小费依然是呈增长的趋势

那么吃饭的时间对我们有影响吗?

tip_time = data.pivot_table(index=['day','time'],aggfunc='mean')
		        size	        tip	     tips_pct	total_bill
day	    time				
Fri	    Dinner	2.166667	2.940000	0.158916	19.663333
            Lunch	2.000000	2.382857	0.188765	12.845714
Sat	    Dinner	2.517241	2.993103	0.153152	20.441379
Sun	    Dinner	2.842105	3.255132	0.166897	21.410000
Thur	    Dinner	2.000000	3.000000	0.159744	18.780000
            Lunch	2.459016	2.767705	0.161301	17.664754

看得出来,不论是工作日还是休息日,只有晚饭才是收入最高的时候,虽然百分比少了,但是人家消费高啊

所以!真正的结果是晚上人数越多的抽烟女性才是我们的终极目标