数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。
在常见的数据挖掘工作中,脏数据包括如下内容:
缺失值的处理分为删除存在缺失值的记录、对可能值进行插补和不处理。
异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点的分析。
代码清单3-1,餐饮销售额数据异常值检测代码
销量count200.000000mean2755.214700std751.029772min22.00000025%2451.97500050%2655.85000075%3026.125000max9106.440000其中count是非空值数,通过len(data)可以知道数据的记录为201条,因此缺失值数为1。另外提供的基本参数还有平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。
分布分析能揭示数据的分布特征和分布类型。对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表、绘制频率分布直方图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。
对于定量变量而言,选择“组数”和“组宽”是做频率分布分析时最主要的问题,一般按照以下步骤进行。
1)求极差。2)决定组距与组数。3)决定分点。4)列出频率分布表。5)绘制频率分布直方图。
遵循的主要原则如下。1)各组之间必须是相互排斥的。2)各组必须将所有的数据包含在内。3)各组的组宽最好相等。
对于定性变量,常常根据变量的分类类型来分组,可以釆用饼图和条形图来描述定性变量的分布。
对比分析主要有以下两种形式。
(1)绝对数比较绝对数比较是利用绝对数进行对比,从而寻找差异的一种方法。
(2)相对数比较相对数比较是由两个有联系的指标对比计算的,用以反映客观现象之间数量联系程度的综合指标,其数值表现为相对数。由于研究目的和对比基础不同,相对数可以分为以下几种。
1)结构相对数:将同一总体内的部分数值与全部数值对比求得比重,用以说明事物的性质、结构或质量。如居民食品支出额占消费支出总额比重、产品合格率等。2)比例相对数:将同一总体内不同部分的数值进行对比,表明总体内各部分的比例关系。如人口性别比例、投资与消费比例等。3)比较相对数:将同一时期两个性质相同的指标数值进行对比,说明同类现象在不同空间条件下的数量对比关系。如不同地区商品价格对比,不同行业、不同企业间某项指标对比等。4)强度相对数:将两个性质不同但有一定联系的总量指标进行对比,用以说明现象的强度、密度和普遍程度。如人均国内生产总值用“元/人”表示,人口密度用“人/平方公里”表示,也有用百分数或千分数表示的,如人口出生率用%。表示。5)计划完成程度相对数:是某一时期实际完成数与计划数的对比,用以说明计划完成程度。6)动态相对数:将同一现象在不同时期的指标数值进行对比,用以说明发展方向和变化的速度。如发展速度、增长速度等。
用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。
平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。
(1)均值均值是所有数据的平均值。
作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据是偏态分布的,那么均值就不能很好地度量数据的集中趋势。为了消除少数极端值的影响,可以使用截断均值或者中位数来度量数据的集中趋势。截断均值是去掉高、低极端值之后的平均数。
(2)中位数中位数是将一组观察值按从小到大的顺序排列,位于中间的那个数。即在全部数据中,小于和大于中位数的数据个数相等。
⑶众数众数是指数据集中出现最频繁的值。众数并不经常用来度量定性变量的中心位置,更适用于定性变量。众数不具有唯一性。当然,众数一般用于离散型变量而非连续型变量。
(1)极差极差=最大值一最小值
极差对数据集的极端值非常敏感,并且忽略了位于最大值与最小值之间的数据的分布情况。
(2)标准差标准差度量数据偏离均值的程度
(3)变异系数变异系数度量标准差相对于均值的离中趋势
变异系数主要用来比较两个或多个具有不同单位或不同波动幅度的数据集的离中趋势。
(4)四分位数间距四分位数包括上四分位数和下四分位数。将所有数值由小到大排列并分成四等份,处于第一个分割点位置的数值是下四分位数,处于第二个分割点位置(中间位置)的数值是中位数,处于第三个分割点位置的数值是上四分位数。
四分位数间距,是上四分位数QU,与下四分位数QL之差,其间包含了全部观察值的一半。其值越大,说明数据的变异程度越大;反之,说明变异程度越小。
代码清单3-2,餐饮销量数据统计量分析代码
贡献度分析又称帕累托分析,它的原理是帕累托法则,又称20/80定律。同样的投入放在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润。
代码清单3-3,菜品盈利帕累托图代码
散点图矩阵如图3-12所示。
一般用于分析两个连续性变量之间的关系,其计算公式如下。
因为一个变量的相同的取值必须有相同的秩次,所以在计算中采用的秩次是排序后所在位置的平均值。
方法名
函数功能
所属库
sum()
计算数据样本的总和(按列计算)
Pandas
mean()
计算数据样本的算术平均数
var()
计算数据样本的方差
std()
计算数据样本的标准差
corr()
cov()
计算数据样本的协方差矩阵
skew()
样本值的偏度(三阶矩)
kurt()
样本值的峰度(四阶矩)
describe()
给出样本的基本描述(基本统计量如均值、标准差等)
样本D可为DataFrame,返回协方差矩阵;Sl.cov(S2),SI、S2均为Series,这种格式指定计算两个Series之间的协方差。
实例:计算6x5随机矩阵的协方差矩阵。
代码清单3-6,计算6x5随机矩阵的协方差矩阵
#-*-coding:utf-8-*-#计算6x5随机矩阵的协方差矩阵importpandasaspdimportnumpyasnpD=pd.DataFrame(np.random.randn(6,5))#产生6X5随机矩阵D.cov()#计算协方差矩阵result=D[0].cov(D[1])#计算第一列和第二列的协方差print(result)skew/kurt功能:计算数据样本的偏度(三阶矩)/峰度(四阶矩)。使用格式:D.skew()/D.kurt()
计算样本D的偏度(三阶矩)/峰度(四阶矩)。样本D可为DataFrame或Series。
实例:计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)。
代码清单3-7,计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)
表3-9Pandas累积统计特征函数
cumsum()
依次给出前1、2、…、n个数的和
cumprod()
依次给出前1、2、…、n个数的积
cummax()
依次给出前1、2、…、n个数的最大值
cummin()
依次给出前1、2、…、n个数的最小值
表3-10Pandas累积统计特征函数
rolling_sum()
计算数据样本的总和(按列计算)
rolling_mean()
数据样本的算术平均数
rolling_var()
rolling_std()
rolling_corr()
rolling_cov()
rolling_skew()
样本值的偏度(三阶矩)
rolling_kurt()
样本值的峰度(四阶矩)
其中,cum系列函数是作为DataFrame或’Series对象的方法而出现的,因此命令格式为D.cumsum(),而rolling_系列是pandas的函数,不是DataFrame或Series对象的方法,因此,它们的使用格式为pd.rolling_mean(D,k),意思是每k列计算一次均值,滚动计算。
实例:
D=pd.Series(range(0,20))#构造Series,内容为0~19共20个整数D.cumsum()#给出前n项和pd.rolling_sum(D,2)#依次对相邻两项求和3.3.3、统计作图函数通过统计作图函数绘制的图表可以直观地反映出数据及统计量的性质及其内在规律,如盒图可以表示多个样本的均值,误差条形图能同时显示下限误差和上限误差,最小二乘拟合曲线图能分析两变量间的关系。表3-11Python主要统计作图函数
作图函数名
作图函数功能
所属工具箱
plot()
绘制线性二维图,折线图
Matplotlib/Pandas
pie()
绘制饼型图
hist()
绘制二维条形直方图,可显示数据的分配情形
boxplot()
绘制样本数据的箱形图
plot(logy=True)
绘制y轴的对数图形
plot(yen=error)
绘制误差条形图
在作图之前,通常要加载以下代码。
功能:绘制线性二维图、折线图。使用格式:
这里使用的是DataFrame或Series对象内置的方法作图,默认以Index为横坐标,每列数据为纵坐标自动作图,通过kind参数指定作图类型,支持line(线)、bar(条形)、barh、hist(直方图)、box(箱线图)、kde(密度图)和area、pie(饼图)等,同时也能够接受plt.plot()中接受的参数。因此,如果数据已经被加载为Pandas中的对象,那么以这种方式作图是比较简洁的。
实例:在区间(0= 代码清单3-8,绘制一条蓝色的正弦虚线 功能:绘制饼型图。使用格式:plt.pie(size)使用Matplotlib绘制饼图,其中size是一个列表,记录各个扇形的比例。pie有丰富的参数,详情请参考下面的实例。 实例:通过向量[15,30,45,10]画饼图,注上标签,并将第2部分分离出来。绘制结果 代码清单3-9,画饼图 实例:绘制二维条形直方图,随机生成有1000个元素的服从正态分布的数组,分成10组绘制直方图。绘制结果如图3-15所示。 代码清单3-10,二维条形直方图 有两种比较简单的方式绘制D的箱形图,其中一种是直接调用DataFrame的boxplot()方法;另外一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱形图(box)。其中,盒子的上、下四分位数和中值处有一条线段。箱形末端延伸出去的直线称为须,表示盒外数据的长度。如果在须外没有数据,则在须的底部有一点,点的颜色与须的颜色相同。 实例:绘制样本数据的箱形图,样本由两组正态分布的随机数据组成。其中,一组数据均值为0,标准差为1,另一组数据均值为1,标准差为1。绘制结果如图3-16所示。 代码清单3-11,箱形图 对x轴(y轴)使用对数刻度(以10为底),y轴(X轴)使用线性刻度,进行plot函数绘图,D为Pandas的DataFrame或者Series。 实例:构造指数函数数据使用plot(logy=True)函数进行绘图,绘制结果如图3-17所示。 代码清单3-12,指数函数plot图 绘制误差条形图。D为Pandas的DataFrame或Series,代表着均值数据列,而error则是误差列,此命令在y轴方向画出误差棒图;类似地,如果设置参数xerr=error,则在x轴方向画出误差棒图。