数据探索 —— 数据特征分析

分布分析

分布分析能解释数据的分布特征和分布类型。对于定量数据,欲了解其分布形式是对称还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表、绘制频率分布直方图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。

定量数据的分布分析

对于定量变量而言,选择“组数”和“组宽”是做频率分布分析时最主要的问题,一般按照以下步骤进行:

  1. 求极差。
  2. 决定组距与组数。
  3. 决定分点。
  4. 列出频率分布表。
  5. 绘制频率分布直方图。

遵循的主要原则如下:

  1. 各组之间必须是相互排斥的。
  2. 各组必须将所有的数据包含在内。
  3. 各组的组宽最好相等。

下表所示为菜品“捞起生鱼片”在2014年第二个季度的销售数据,通过表中数据绘制销售量的频率分布表、频率分布图,对该定量数据做出相应的分析。


“捞起生鱼片”的销售情况截图

(1)求极差
极差 = 最大值 - 最小值 = 3960 - 45 = 3915
(2)分组
这里根据业务数据的含义,可取组距为500.
组数 = 极差 / 组距 = 3915 / 500 = 7.83 => 8
(3)决定分点

[0, 500) [500, 1000) [1000, 1500) [1500, 2000)
[2000, 2500) [2500, 3000) [3000, 3500) [3500, 4000)

(4)绘制频率分布直方图
根据分组区间得到如下表所示的频率分布表。其中,第1列将数据所在的范围分成若干组段,第1个组段要包括最小值,最后一个组段要包括最大值。习惯上各组设为左闭右开的半开区间,如第一个分组为[0, 500)。第2列组中值是各组段的代表值,由本组段的上、下限相加除以2得到。第3列和第4列分别为频数和频率。第5列是累计频率,是否需要计算该列视情况而定。

对比分析

对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。特别适用于指标间的横纵向比较、时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的步骤,只有选择合适,才能做出客观的评价,选择不合适,评价可能得出错误的结论。
对比分析主要有以下两种形式:
(1)绝对数比较
绝对数比较是利用绝对数进行对比,从而寻找差异的一种方法。
(2)相对数比较
相对数比较是由两个有联系的指标对比计算的,用以反映客观现象之间数量联系程度的综合指标,其数值表现为相对数。由于研究目的和对比基础不同,相对数可以分为以下几种。

  • 结构相对数:将同一总体内的部分数值与全部数值对比求得比重,用以说明事物的性质、结构或质量。如居民食品支出额占消费支出总额比重、产品合格率等。
  • 比例相对数:将同一总体内不同部分的数值进行对比,表明总体内各部分的比例关系。如人口性别比例、投资与消费比例等。
  • 比较相对数:将同一时期两个性质相同的指标数值进行对比,说明同类现象在不同条件下的数量对比关系。如不同地区商品价格对比,不同行业、不同企业间某项指标对比等。
  • 强度相对数:将两个性质不同但有一定联系的总量指标进行对比,用以说明现象的强度、密度和普通程度。如人均国内生产总值用“元/人”表示,人口密度用“人/平方公里”表示,也有用百分数或千分数表示的,如人口出生率用‰表示。
  • 计划完成程度相对数:是某一时期实际完成数与计划数的对比,用以说明计划完成程度。
  • 动态相对数:将同一现象在不同时期的指标数值进行对比,用以说明发展发向和变化的速度。如发展速度、增长速度。

统计量分析

用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。
平均水平的指标是对个体集中趋势的度量,使用最广泛的均值和中位数;反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。

集中趋势度量

(1)均值
均值是所有数据的平均值。
如果求n个原始观察数据的平均数,计算公式为:



有时,为了反映在均值中不同成分所占的不同重要程度,为数据集中的每一个xi赋予wi,这就得到了加权平均值的计算公式:



类似的,频率分布表的平均数可以使用下式计算:

式中,x1,x2,...,xk分别为k个组段的组中值;f1,f2,...,fk分别为k个组段的频率。这里的fi起了权重的作用。
作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据是偏态分布的,那么均值就不能很好地度量数据的集中趋势。为了消除少数极端值的影响,可以使用截断均值或者中位数来度量数据的集中趋势。截断均值是去掉高、低极端值之后的平均数。

(2)中位数
中位数是将一组观察值按从小到大的顺序排列,位于中间的那个数。即在全部数据中,小于和大于中位数的数据个数相等。
将某一数据集x:{x1,x2,...,xn}按从小到大排序:{x(1),x(2),...,x(n)}。
当n为奇数时:



当n为偶数时:

(3)众数
众数是指数据集中出现最频繁的值。众数并不经常用来度量定性变量的中心位置,更适用于定型变量。众数不具有唯一性。当然,众数一般用于离散型变量而非连续型变量。

离中趋势度量

(1)极差



极差对数据集的极端值非常敏感,并且忽略了位于最大值与最小值之间的数据的分布情况。
(2)标准差
标准差度量数据偏离均值的程度,计算公式为:



(3)变异系数
变异系数度量标准差相对于均值的离中趋势,计算公式为:

变异系数主要用来比较两个或多个具体不同单位或不同波动幅度的数据集的离中趋势。
(4)四分位数间距
四分位数包括上四分位数和下四分位数。将所有数值由小到大排列并分成四等份,处于第一个分割点位置的数值是下四分位数,处于第二个分割点位置(中间位置)的数值是中位数,处于第三个分割点位置的数值是上四分位数。
四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。其值越大,说明数据的变异程度越大;反之,说明变异程度越小。

周期性分析

周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。时间尺度相对较长的周期性趋势有年度周期性趋势、季节性周期趋势,相对较短的有月度周期性趋势、周度周期性趋势,甚至更短的天、小时周期性趋势。
例如,要对某单位用电量进行预测,可以先分析该用电单位日用电量的时序图来直观地估计其用电量变化趋势。

贡献度分析

贡献度分析又称帕累托分析,它的原理是帕累托法则,又称20/80定量。同样的投入放在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润。


帕累托图

由上图看出,对餐饮企业来讲,应用贡献度分析可以重点改善某菜系盈利最高的前80%的菜品,或者重点发展综合影响最高的80%的部门。这种结果可以通过帕累托图直观地呈现出来。上图是海鲜系列的10个菜品A1~A10某个月的盈利额(已按照从大到小排序)。
菜品A1 ~ A7共7个菜品,占菜品种类数的70%,总盈利额占该月盈利额的85.0033%。根据帕累托法则,应该增加对菜品A1 ~ A7的成本投入,减少对菜品A8 ~ A10的投入以获得更高的盈利额。

# _*_ coding:utf-8 _*_
# 菜品盈利数据 帕累托图
from __future__ import print_function
import 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_values(ascending = False)

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'盈利(元)')
p = 1.0 * data.cumsum() / data.sum()
p.plot(color = 'r', secondary_y = True, style = '-o', linewidth = 2)
plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))  #添加注释,即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u'盈利(比例)')
plt.show()
菜品盈利帕累托图

相关性分析

分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。

直接绘制散点图

判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图,图下图所示。


相关关系的图示

绘制散点图矩阵

需要同时考察多个变量间的相关关系时,一一绘制它们间的简单散点图是十分麻烦的。此时可利用散点图矩阵同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关性,这在进行多元线性回归时显得尤为重要。


散点图矩阵

计算相关系数

为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的有Pearson相关系数、Spearman秩相关系数和判定系数。
(1)Pearson相关系数
一般用于分析两个连续性变量之间的关系,其计算公式如下:


相关系数r的取值范围:-1≤r≤1

0<|r|<1表示存在不同程度线性相关:

(2)Spearman秩相关系数
Pearson线性相关系数要求连续变量的取值服从正态分布。不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数,也称等级相关系数来描述。
其计算公式如下:

对两个变量成对的取值分别按照从小到大(或者从大到小)顺序编秩,Ri代表xi的秩次,Qi代表yi的秩次,Ri-Qi为xi、yi的秩次之差。
(3)判定系数
判定系数是相关系数的平方,用r2表示;用来衡量回归方程对y的解释程度。判定系数取值范围:0≤r2≤1。r2越接近于1,表明x与y之间的相关性越强;r2越接近于0,表明两个变量之间几乎没有直线相关关系。
餐饮系统中可以统计得到不同菜品的日销量数据,分析这些菜品销售量之间的相关性可以得到不同菜品之间的关系,比如是替补菜品、互补菜品或者没有关系,为原材料采购提供参考。代码如下:

# _*_ coding:utf-8 _*_
from __future__ import print_function
import pandas as pd

catering_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'翡翠蒸香茜饺'])  # 计算"百合酱蒸凤爪"与"翡翠蒸香茜饺"的相关系数

上面的代码给出了3种不同形式的求相关系数的运算。运行代码,可以得到任意两款菜式之间的相关系数,运行“data.corr()[u'百合酱蒸凤爪'] ”可以得到如下结果:

百合酱蒸凤爪     1.000000
翡翠蒸香茜饺     0.009206
金银蒜汁蒸排骨    0.016799
乐膳真味鸡      0.455638
蜜汁焗餐包      0.098085
生炒菜心       0.308496
铁板酸菜豆腐     0.204898
香煎韭菜饺      0.127448
香煎罗卜糕     -0.090276
原汁原味菜心     0.428316
Name: 百合酱蒸凤爪, dtype: float64

从上面的结果可以看到,如果顾客点了“百合酱蒸凤爪”,则和“点翡翠蒸香茜饺”、“金银蒜汁蒸排骨”、“香煎罗卜糕”、“铁板酸菜豆腐”、“香煎韭菜饺”等主食类的相关性比较低,反而点“乐膳真味鸡”、“生炒菜心”、“原汁原味菜心”的相关性比较高。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 当喝药已经成为了生活的常态 我是不是只能选择苟且 忧思过度 很闲但是又很忙的我 孤单且孤独的 我不知道如何去和自己...
    宴晓阅读 132评论 0 0
  • 特别讨厌!特别讨厌!特别讨厌!特别讨厌!特别讨厌!特别讨厌!特别讨厌!有的人…
    狮子秒变喵阅读 135评论 0 1
  • RxJava的很多介绍中的开篇会介绍这样一堆关系,Observable(被观察者),Observer(观察者),s...
    tmyzh阅读 231评论 0 2
  • 昨天是 关东冷空气来的第一天, 出一趟门回来就一直打喷嚏。 打算上午到事务所安排好所有的工作,就早点回家收拾行李出...
    劉黎帆阅读 284评论 0 0