3.2 -3.4 数据特征分析

来源:互联网 发布:windows安装ant 编辑:程序博客网 时间:2024/06/15 18:19

demo/data/catering_fish_congee

这个文件是“捞起生鱼片”的销售数据,书上的文件名写错了,注意改一下。


内容主要是这个菜从 2014/4/1 到 2014/6/30 的销售额。

其实这里没给代码,给的结果,看起来这里用 Excel 也能很好完成的。

同时给了很多分析方法。不过本文主要是代码实践,就不写了。


针对餐饮销量数据有一个统计分析代码:

#-*- coding: utf-8 -*-#餐饮销量数据统计量分析from __future__ import print_functionimport pandas as pdcatering_sale = 'data/catering_sale.xls' #餐饮数据data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列data = data[(data[u'销量'] > 400)&(data[u'销量'] < 5000)] #过滤异常数据statistics = data.describe() #保存基本统计量statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] #极差statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean'] #变异系数statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] #四分位数间距print(statistics)

这段代码里面需要说一下的就是 Pandas 中的 .loc 方法。

statistics.loc['dis'] 
这个代码的意思就是选择一列进行操作,这里就是 dis 列。


整个代码运行结果:



==========================================================================================

接下来对菜品贡献度进行分析。

比如餐馆有很多菜品,如何确定重点改善盈利度最高的菜品,砍掉盈利度低的菜品?


代码:

#-*- coding: utf-8 -*-#菜品盈利数据 帕累托图from __future__ import print_functionimport pandas as pd#初始化参数dish_profit = 'data/catering_dish_profit.xls' #餐饮菜品盈利数据data = pd.read_excel(dish_profit, index_col = u'菜品名')data = data[u'盈利'].copy()data.sort(ascending = False) # sort_values(inplace = True)import matplotlib.pyplot as plt #导入图像库plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure()data.plot(kind='bar') # 条状图plt.ylabel(u'盈利(元)') # Y轴p = 1.0*data.cumsum()/data.sum()p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2) # 那条曲线的样式plt.annotate(format(p[6], '.3%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) # 添加注释,即85%处的标记。这里包括了指定箭头样式。第一个点记为编号0,这里就是编号6的点。# plt.annotate() 是一个文本注释方法,xy 是被注释的地方,xytext 是插入文本的地方。# format(p[6], '.4%') 中,p[6]应该是计算的编号6的点,'.4%'是百分比化,.4 是小数点后4位的意思plt.ylabel(u'盈利(比例)')plt.show()


注意我自己添加的关于画图的注释,都是自己试出来的。


这里的代码有个“未来警告”:sort is deprecated,use sort_values(inplace = True) for INPLACE sorting

                                             data.sort(ascending = False)

懒得管了。


结果如下:



==========================================================================================

相关性分析


SPSS里面其实也能做,但是要试试Python

理论的Pearson和Spearman就不介绍了,以前数学建模接触过。

主要是给代码:

#-*- coding: utf-8 -*-#餐饮销量数据相关性分析from __future__ import print_functionimport pandas as pdcatering_sale = 'data/catering_sale_all.xls' #餐饮数据,含有其他属性data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列data.corr() #相关系数矩阵,即给出了任意两款菜式之间的相关系数data.corr()[u'百合酱蒸凤爪'] #只显示“百合酱蒸凤爪”与其他菜式的相关系数data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']) #计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数print(data.corr()[u'百合酱蒸凤爪'])

注意书上没有那一行 print,而且我试了试 print 只能用 Python 3 的格式,也就是带括号。

运行结果如下:



多试试,把最后的代码改一改:

print(data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']))


或者是:

print(data.corr())

结果也不错。

======================================================================

3.4

讲了很多函数,见书,就不赘述了。


给个小例子

#-*- coding:utf-8 -*-import pandas as pdD = pd.DataFrame([range(1,8), range(2,9)]) # 生成样本D.corr(method = 'pearson') # 计算相关矩阵S1 = D.loc[0] # 提取第一行S2 = D.loc[1] # 提取第二行S1.corr(S2, method = 'pearson') # 计算相关系数print(S1.corr(S2, method = 'pearson'))

实际输出是 1.0 不知道有什么问题。


====================================================================================


另外讲了 画图方法 和 统计特征函数 的方法。

主要有二维线图plot,饼图pie,条形直方图hist,箱图boxplot,对数图plot(logx = True)

之类的很多...




0 0
原创粉丝点击