第四章 数据分析
一、数据分析基础
1.数据分析的方法
● 现状分析:对比分析法、平均分析法、综合评价分析法。
● 原因分析:分组分析、交叉分析、杜邦分析、结构分析、聚类分析、关联分析、漏斗图分析、矩阵关联分析。
● 预测分析:回归分析、时间序列、决策树、神经网络。
2.数据分析的工具
数据分析需要处理大量的数据,进行复杂的运算,因此数据分析软件的使用是必不可少的。数据分析的工具众多,根据分析数据的层次结构不同,常用的数据分析软件可分为四类。
①数据存储层:数据库技术,理解SQL查询语言的基本结构和数据读取。常用的软件有Access、MySQL、SQL Server、Oracle等。
②数据报表层:报表制作、报表分析及数据可视化。常用的软件有Crystal Report水晶报表、Tableau等。
③数据分析层:统计分析和数据挖掘。常用的软件有Excel、SPSS、SAS、R语言、Python语言等。
④数据展现层:数据可视化。常用的软件有Visio、Smart Draw等。
3.数据导入
● 导入txt文件:read_table(file,names=[列名1,列2,…],sep="",…)。
● 导入csv文件:read_csv(file,names=[列名1,列2,…],sep="",…)。
● 导入Excel文件:read_excel(file,sheetname,header=0)。
● 导入MySQL文件:read_sql(sql,con=数据库)。
4.数据导出
数据采集完成后,经过处理,一般存储为Excel表或生成csv文件,供二次分析数据时使用。Python自带csv的处理库,csv文件相比Excel表使用更简单,而且不需要引入第三方库。
● 导出csv文件:to_csv(file_path,sep= ",",index=TRUE,header=TRUE)。
● 导出Excel文件:to_excel(file_path,index=TRUE,header=TRUE)。
● 导出到MySQL库:to_sql(tableName,con=数据库链接)。
二、数据处理
1.数据清洗
(1)重复数据的处理
合并、清除是处理重复数据的基本方法。
(2)缺失数据的处理
缺失值的处理包括两个步骤,即缺失数据的识别和缺失值处理。Python中缺失值通常以NaN表示,可以用isnull()函数来判断缺失值是否存在。缺失值处理的常用方法有以下三种。
①删除法:最简单的缺失处理方法,根据数据处理的不同角度可分为删除观测样本和删除变量两种。在Python中,可通过dropna()函数移除所有缺失数据行;删除变量适用于该变量中有较多缺失且对研究目标影响不大的情况,通过dropna(axis=1)来实现整个变量的删除。
②替换法:数值型数据一般用均值替换,非数值型数据一般用中位数或众数替换。
③插补法:采用前后值、变量均值、中位数等其中之一来代替缺失值,数据更加完整。
(3)噪声数据的处理
数据分析工具都有寻找噪声数据的函数,函数通过寻找数据集中与其他观测值及均值差距最大的点作为异常值。在进行噪声数据检查后,不可以直接使用删除方式处理异常值,因为有可能孤立点数据正是实验要找出的异常数据。在实际操作中常用分箱、回归、聚类、计算与人工检查相结合等方法“光滑”数据,去掉数据中的噪声。
①分箱:指通过对数据进行排序,利用数据“近邻”(即周围的值)来光滑有序数据值的一种局部光滑方法。在分箱方法中,可以使用箱均值、箱中位数或箱边界进行光滑。对于用箱均值或箱中位数光滑,可以使用平均值或中位数代替箱中的噪声数据;而对于箱边界平滑,将给定箱中最大值或最小值视为箱边界,箱中的噪声数据被替换为最接近的边界值。Python中的cut函数使用数值区间将数值分箱,用在长度相等的桶;qcut使用分位数将数值分箱,用在大小相等的桶。
②回归:通过回归函数拟合数据来“光滑”数据。回归包括线性回归和多元回归。线性回归涉及找出拟合两个变量的“最佳”直线,使得一个属性数据预测另一个数据。
③聚类:通过聚类识别噪声数据后,考察噪声在各个属性上的值与其期望之间的距离以判断引起噪声的属性,利用所属分类中噪声属性上的值对噪声数据进行矫正。
2.数据合并
(1)纵向合并
数据的纵向合并是指多个结构相同的数据框合并成一个数据框。
例:Result=pandas.concat([df1,df2,df3])。
(2)横向合并
数据的横向合并是指不同结构的数据框,按照一定条件进行合并。
例:Result=pandas.concat([df1,s1],axis=1)。
3.数据计算
数据计算是对原有的字段计算或转换,形成数据分析所需要的新数据字段。
4.数据分组
数据分组是根据数据分析对象的特征,把数据划分为不同的区间来进行研究,以揭示其内在的联系和规律性。
例:cut(series,bins,right=true,labels=NULL)。
参数说明:series为需要分组的数据;bins为分组的依据;right为分组时右边是否闭合;labels为分组的自定义标签,默认不定义。
三、描述性分析
1.基本统计
统计分析往往是从了解数据的基本特征开始的,基本统计常用指标主要包括平均数、众数、中位数、标准差、方差等,描述数据的集中趋势和离散趋势,常用的描述性统计分析函数见下表。

2.平均值分析法
平均值分析法是指运用计算平均数的方法,反映总体在一段时间、地点条件下,某一个数量特征的一般水平。平均指标既可用于同一现象在不同地区、不同部门间的横向比较,也可用于同一现象在不同时间的纵向对比。
3.分组分析法
分组分析法是根据数据分析对象的特征,按照一定的指标,把数据分析对象划分为不同的总分和类型,以对比分析各组之间差异性的一种分析方法。分组分析法的关键是确定组数与组距。
4.对比分析法
对比分析法也称比较法,是按照特定的指标系对客观事物加以比较,以达到认识事物的本质和规律并做出正确的判断或评价的数据分析方法。对比分析法通常是把两个或两个以上相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小、水平的高低、速度的快慢,以及各种关系是否协调。因此对比分析法多与其他分析方法结合使用。根据对比的对象和方式不同,一般分为横向对比和纵向对比。
5.交叉分析法
交叉分析通常用于两个或两个以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析。交叉分析使用的函数为piovt_table(values,index,columns,aggfunc,fill_value)。参数说明:values为数据透视表中的值;index为数据透视表中的行;columns为透视表中的列;aggfunc为统计函数;fill_value为NA值的统一替换。交叉分析的主要作用是从多个角度细分数据,从中发现数据变化的具体原因。
6.相关分析法
相关分析是研究现象之间是否存在某种依存关系,并对具有依存关系的现象探讨其相关方向及相关程序。相关关系不同于因果关系,相关性表示两个变量同时变化,而因果关系是一个变量导致另一个变量变化。
● 相关关系的类型:按相关程度分类,可分为完全相关、不完全相关和不相关;按相关的方向分类,可分为正相关和负相关;按相关的形式分类,可分为线性相关和非线性相关。
● 相关系数r:当0.8≤
<1时,为高度相关,当0.3≤
<0.8时,为中度相关,当0≤
<0.3时,为低度相关。
● 相关分析函数:DataFrame.corr()#计算每列序列两两之间的相关度,series.corr(other)#计算原序列与传入序列之间的相关度。
7.常用数据分析方法的对比
常用数据分析方法的对比见下表。

四、数据的可视化表达
1.常用图形的绘制
在Python中,matplotlib是常用的可视化程序库。
● 饼形图:以扇形的面积来指代某种类型的频率,能够直观地反映个体与总体的比例关系。绘制方法:pie(x,labels,colors,explode,autopct)。参数说明:x:绘图的序列;labels:饼形各部分的标签;colors:各部分的颜色;explode:需要突出的块状序列;autopct:饼形图占比的显示格式。
● 柱状图:用于显示一段时间内的数据变化或显示各项之间的比较情况,是以柱的高度来指代某种类型的频数,根据数据大小绘制的统计图,用来比较两个或两个以上的数据。在Python中,用matplotlib绘制柱状图主要有两种方法:bar(left,height,widht,color)或barh(bottom,width,height,color)。参数说明:left:X轴的位置序列,一般采用arange()函数产生一个序列;height:Y轴的数值序列,也就是柱状图的高度;width:柱状图的宽度,一般设置为1;color:柱状图的填充颜色。
● 直方图:用一系列等宽不等高的长方形来绘制,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,变化的高度形态表示数据的分布情况。绘制直方图的方法:hist(x,color,bins,cumulative=False)。参数说明:x:需要进行绘制的向量;color:直方图填充的颜色;bins:直方图的分组个数;cumulative:是否累积计数,默认是False。
● 散点图:分别以自变量和因变量作为横、纵坐标,利用散点的分布形态反映变量关系的一种图形。当自变量与因变量线性相关时,在散点图中,点近似分布在一条直线上。绘制散点图的方法:plt.plot(x,y,
.
,color=(r,g,b))。参数说明:x和y:X轴和Y轴的序列;“.”:使用这个小点;color:颜色。
● 折线图:也称趋势图,是用直线段将各数据点连接起来而组成的图形,以折线方式显示数据的变化趋势。绘制折线图的方法:plt.plot(x,y,
-
,color)。
● 箱形图:又称盒须图、盒式图或箱线图,箱形图包含均值、分位数、中位数以及极值等统计量。箱形图不仅显示不同类别数据的平均水平差异,还能揭示数据间的离散程度、异常值、分布差异。箱形图的绘制方法:plt.boxplot()。其参数众多。
2.数据可视化:回归分析
回归分析的步骤:①根据预测目标,确定自变量和因变量;②绘制散点图,确定回归模型类型;③估计模型参数,建立回归模型;④对回归模型进行检验;⑤利用回归模型进行预测。
回归分析的作用:①判断自变量是否能解释因变量的显著变化,即判断关系是否存在;②判断自变量能够在多大程度上解释因变量,即关系的强度;③判断关系的结构或形式,即反映因变量和自变量之间的相关数学表达式;④预测自变量的值;⑤当评价一个特殊变量或一组变量对因变量的影响时,对其自变量进行控制。
3.数据可视化:聚类分析
聚类分析是对看似无序的对象进行分组、归类,以达到更好地理解研究对象的目的。聚类分析最具代表性的包括k⁃均值聚类、k⁃中心点聚类、密度聚类、系谱聚类、期望最大化聚类。
聚类分析的基本过程:①确定需要参与聚类分析的变量;②对数据进行标准化处理;③选择聚类方法和类别个数;④聚类分析结果解读。
随堂练习
一、单项选择题
1.下列不属于常见数据分析方法的是( )。
A.气象分析 B.现状分析 C.原因分析 D.预测分析
2.以下软件中,属于数据分析层工具的是( )。
A.Access B.Crystal Report C.Python D.Smart Draw
3.( )最能反映数据分布的离散程度。
A.频数 B.中位数 C.方差 D.标准差
4.Python中可以导入不同类型的数据文件,如果要导入Excel文件,则用( )。
A.read_excel B.to_excel C.input_excel D.in_excel
5.在Python 3中对数据进行基本统计分析时,( )函数可以用来求列值的平均数。
A.count() B.sum() C.mean() D.avg()
6.在对数据进行统计分析时,要统计某部分数值占总体的比率,最合适的方法是( )。
A.对比分析法 B.分组分析法 C.结构分析法 D.平均分析法
7.Python常用的可视化程序库是( )。
A.math B.Matplotlib C.Pandas D.NumPy

8.小明调查了本班同学的体重情况,画出了体重分布直方图,如图所示,下列结论不正确的是( )。
A.全班总人数为47人
B.体重在50 ~55千克的人数最多
C.学生体重的众数是14
D.体重在60 ~65千克的人数最少
9.将数据转换为( ),可以反映数据的变化趋势。
A.饼图 B.柱状图 C.散点图 D.折线图
10.某班语文考试科目成绩用箱形图来进行分析,如图所示,对该图的描述不正确的是( )。

A.标号①处所在的横线,表示数据的最大值
B.标号②处的横线,表示数据的上四分位数
C.标号③处的横线,表示数据的平均值
D.标号④处的小圆点,表示数据中的异常值
二、判断题
11.数据采集完成后,经过处理,一般存储为Excel表或者生成txt文件。( )
12.数据的横向合并是指将不同结构的数据框,按照一定条件进行合并。( )
13.交叉分析法必须要有两个或两个以上的分组变量,以交叉表的形式进行变量间关系的对比分析。( )
14.相关系数r的绝对值在[0.8,1)范围时,说明两个量的相关程度较低。( )
15.在箱形图中,箱子比较长,说明数据分布比较分散。( )
16.在进行噪声数据的检查后,可以用直接删除噪声数据的方法处理异常值,因为这样简单方便。( )
三、填空题
17. 是指运用数据分析的工具和方法,根据研究的目的,对数据进行深层次的挖掘和分析,找出内在的联系和变化,从而揭示事物的本质状态,预测事物的发展趋势。
18.重复数据是指数据库中属性值相同的记录。处理重复数据的基本方法是 、清除。
19.在Python中,缺失值通常以 表示,可以用 函数判断是否存在缺失值。
20.噪声数据的处理,实际操作中有 、 、聚类、计算机与人工检查相结合的方法“光滑”数据,去掉数据中的噪声。
21.当皮尔逊系数为 时,表示两个变量之间不存在线性相关关系。
四、应用题
22.某校一年级9班共50名学生参加2022年数学质量检测考试,全班成绩统计见下表。

请根据该表回答问题。
(1)选择合适的图表类型,将以上统计数据直观地呈现出来。
(2)该班学生考试成绩的众数是多少?
(3)小明的考试成绩是83分,能不能说小明的成绩处于全班中等偏上的水平?为什么?