《python数据分析与挖掘实战》笔记第3章 | 您所在的位置:网站首页 › 离中趋势怎么比较 › 《python数据分析与挖掘实战》笔记第3章 |
文章目录第3章:数据探索3.1、数据质量分析3.2、数据特征分析3.2.1、分布分析3.2.2、对比分析3.2.3、统计量分析1.集中趋势度量2.离中趋势度量3.2.4、周期性分析3.2.5、贡献度分析3.2.6、相关性分析1. 直接绘制散点图2. 绘制散点图矩阵3. 计算相关系数3.3、python主要数据探索函数3.3.1、基本统计特征函数corr()cov()skew/kurt3.3.2、拓展统计特征函数3.3.3、统计作图函数(1) plot(2) pie(3) hist(4) boxplot(5) plot(logx = True) / plot(logy = True)(6)plot(yerr = error)3.4、小结第3章:数据探索 根据观测、调查收集到初步的样本数据集后,接下来要考虑的问题是: 样本数据集的数量和质量是否满足模型构建的要求?是否出现从未设想过的数据状态?其中有没有什么明显的规律和趋势?各因素之间有什么样的关联性?3.1、数据质量分析数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。 数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。 在常见的数据挖掘工作中,脏数据包括如下内容: 缺失值异常值不一致的值重复数据及含有特殊符号(如#、¥、*)的数据缺失值的处理分为删除存在缺失值的记录、对可能值进行插补和不处理。 异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点的分析。 代码清单3-1,餐饮销售额数据异常值检测代码 代码语言:javascript复制#-*- coding: utf-8 -*- import pandas as pd catering_sale = '../data/catering_sale.xls' #餐饮数据 data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列 print(data.describe()) # 查看数据的基本情况 import matplotlib.pyplot as plt #导入图像库 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 plt.figure() #建立图像 p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法 x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签 y = p['fliers'][0].get_ydata() y.sort() #从小到大排序,该方法直接改变原对象 #用annotate添加注释 #其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。 #以下参数都是经过调试的,需要具体问题具体调试。 for i in range(len(x)): if i>0: plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i])) else: plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i])) plt.show() #展示箱线图describe()函数可以查看数据的基本情况 代码语言:javascript复制 销量 count 200.000000 mean 2755.214700 std 751.029772 min 22.000000 25% 2451.975000 50% 2655.850000 75% 3026.125000 max 9106.440000其中count是非空值数,通过len(data)可以知道数据的记录为201条,因此缺失值数为1。另外提供的基本参数还有平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。 异常值检测箱型图 异常值检测箱型图 一致性分析 数据不一致性是指数据的矛盾性、不相容性。直接对不一致的数据进行挖掘,可能会产生与实际相违背的挖掘结果。 3.2、数据特征分析3.2.1、分布分析分布分析能揭示数据的分布特征和分布类型。对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表、绘制频率分布直方 图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。 定量数据的分布分析对于定量变量而言,选择“组数”和“组宽”是做频率分布分析时最主要的问题,一般 按照以下步骤进行。 1)求极差。 2)决定组距与组数。 3)决定分点。 4)列出频率分布表。 5)绘制频率分布直方图。 遵循的主要原则如下。 1) 各组之间必须是相互排斥的。 2) 各组必须将所有的数据包含在内。 3) 各组的组宽最好相等。 定性数据的分布分析对于定性变量,常常根据变量的分类类型来分组,可以釆用饼图和条形图来描述定性变量的分布。 3.2.2、对比分析对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大 小,水平的高低,速度的快慢,以及各种关系是否协调。特别适用于指标间的横纵向比较、 时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的步骤,只有选择合 适,才能做出客观的评价,选择不合适,评价可能得出错误的结论。 对比分析主要有以下两种形式。 (1)绝对数比较 绝对数比较是利用绝对数进行对比,从而寻找差异的一种方法。 (2) 相对数比较 相对数比较是由两个有联系的指标对比计算的,用以反映客观现象之间数量联系程度 的综合指标,其数值表现为相对数。由于研究目的和对比基础不同,相对数可以分为以下 几种。 1) 结构相对数:将同一总体内的部分数值与全部数值对比求得比重,用以说明事物的 性质、结构或质量。如居民食品支出额占消费支出总额比重、产品合格率等。 2) 比例相对数:将同一总体内不同部分的数值进行对比,表明总体内各部分的比例关 系。如人口性别比例、投资与消费比例等。 3) 比较相对数:将同一时期两个性质相同的指标数值进行对比,说明同类现象在不同 空间条件下的数量对比关系。如不同地区商品价格对比,不同行业、不同企业间某项指标对 比等。 4) 强度相对数:将两个性质不同但有一定联系的总量指标进行对比,用以说明现象的 强度、密度和普遍程度。如人均国内生产总值用“元/人”表示,人口密度用“人/平方公 里”表示,也有用百分数或千分数表示的,如人口出生率用%。表示。 5) 计划完成程度相对数:是某一时期实际完成数与计划数的对比,用以说明计划完成 程度。 6) 动态相对数:将同一现象在不同时期的指标数值进行对比,用以说明发展方向和变 化的速度。如发展速度、增长速度等。 3.2.3、统计量分析用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。 平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数; 反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。 1.集中趋势度量(1)均值 均值是所有数据的平均值。 作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据 是偏态分布的,那么均值就不能很好地度量数据的集中趋势。为了消除少数极端值的影响, 可以使用截断均值或者中位数来度量数据的集中趋势。截断均值是去掉高、低极端值之后的平均数。 (2)中位数 中位数是将一组观察值按从小到大的顺序排列,位于中间的那个数。即在全部数据中, 小于和大于中位数的数据个数相等。 ⑶众数 众数是指数据集中出现最频繁的值。众数并不经常用来度量定性变量的中心位置,更适 用于定性变量。众数不具有唯一性。当然,众数一般用于离散型变量而非连续型变量。 2.离中趋势度量(1)极差 极差=最大值一最小值 极差对数据集的极端值非常敏感,并且忽略了位于最大值与最小值之间的数据的分布 情况。 (2)标准差 标准差度量数据偏离均值的程度 (3) 变异系数 变异系数度量标准差相对于均值的离中趋势 变异系数主要用来比较两个或多个具有不同单位或不同波动幅度的数据集的离中趋势。 (4 )四分位数间距 四分位数包括上四分位数和下四分位数。将所有数值由小到大排列并分成四等份,处于 第一个分割点位置的数值是下四分位数,处于第二个分割点位置(中间位置)的数值是中位 数,处于第三个分割点位置的数值是上四分位数。 四分位数间距,是上四分位数QU,与下四分位数QL之差,其间包含了全部观察值的一 半。其值越大,说明数据的变异程度越大;反之,说明变异程度越小。 代码清单3-2,餐饮销量数据统计量分析代码 代码语言:javascript复制#-*- coding: utf-8 -*- #餐饮销量数据统计量分析 from __future__ import print_function import pandas as pd catering_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)结果 代码语言:javascript复制 销量 count 195.000000 mean 2744.595385 std 424.739407 min 865.000000 25% 2460.600000 50% 2655.900000 75% 3023.200000 max 4065.200000 range 3200.200000 var 0.154755 dis 562.6000003.2.4、周期性分析周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。时间尺度相对较长的周期性趋势有年度周期性趋势、季节性周期趋势,相对较短的有月度周期性趋势、 周度周期性趋势,甚至更短的天、小时周期性趋势。 3.2.5、贡献度分析贡献度分析又称帕累托分析,它的原理是帕累托法则,又称20/80定律。同样的投入放 在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅 销的产品,而其他80%的产品只产生了 20%的利润。 代码清单3-3,菜品盈利帕累托图代码 代码语言:javascript复制#-*- 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_index(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()效果图 效果图3.2.6、相关性分析分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。 1. 直接绘制散点图判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图,如图3-11所示。 3-112. 绘制散点图矩阵需要同时考察多个变量间的相关关系时,一一绘制它们间的简单散点图是十分麻烦的。 此时可利用散点图矩阵同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关 性,这在进行多元线性回归时显得尤为重要。 散点图矩阵如图3-12所示。 3-123. 计算相关系数为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的有Pearson相关系数、Spearman秩相关系数和判定系数。 (1 ) Pearson相关系数 一般用于分析两个连续性变量之间的关系,其计算公式如下。 image.png(2 ) Spearman秩相关系数 Pearson线性相关系数要求连续变量的取值服从正态分布。不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数,也称等级相关系数来描述。 因为一个变量的相同的取值必须有相同的秩次,所以在计算中采用的秩次是排序后所在位置的平均值。 只要两个变量具有严格单调的函数关系,那么它们就是完全Spearman相关的,这与Pearson 相关不同,Pearson相关只有在变量具有线性关系时才是完全相关的。 (3 )判定系数 判定系数是相关系数的平方,用r的平方表示;用来衡量回归方程对y的解释程度。判定系数取值范围:0= |
CopyRight 2018-2019 实验室设备网 版权所有 |