实验目的

掌握Python语言对数据集数据特征的分析方法

实验原理

对数据进行质量分析后,接下来可以通过绘制图表、计算统计量等手段对数据进行特征分析。

特征分析主要有分布分析、统计量分析、周期性分析、相关性分析等等

实验步骤

注意:python2中print语句不加括号,python3中print语句打印内容要加括号!

频数分析

1 定性分析(柱状图、饼形图)

柱状图是以柱的高度来指代某种类型的频数,使用Matplotlib对成绩这一定性变量绘制柱状图的代码如下:

1 from matplotlib import pyplot

2

3 #绘制柱状图

4 def drawBar(grades):

5 xticks = ['A', 'B', 'C', 'D', 'E']

6 gradeGroup = {}

7 #对每一类成绩进行频数统计

8 for grade in grades:

9 gradeGroup[grade] = gradeGroup.get(grade, 0) + 1

10 #创建柱状图

11 #第一个参数为柱的横坐标

12 #第二个参数为柱的高度

13 #参数align为柱的对齐方式,以第一个参数为参考标准

14 pyplot.bar(range(5), [gradeGroup.get(xtick, 0) for xtick in xticks], align='center')

15

16 #设置柱的文字说明

17 #第一个参数为文字说明的横坐标

18 #第二个参数为文字说明的内容

19 pyplot.xticks(range(5), xticks)

20

21 #设置横坐标的文字说明

22 pyplot.xlabel('Grade')

23 #设置纵坐标的文字说明

24 pyplot.ylabel('Frequency')

25 #设置标题

26 pyplot.title('Grades Of Male Students')

27 #绘图

28 pyplot.show()

29

30 drawBar(grades)

绘制出来的柱状图的效果如下:

而饼形图是以扇形的面积来指代某种类型的频率,使用Matplotlib对成绩这一定性变量绘制饼形图的代码如下:

1 from matplotlib import pyplot

2

3 #绘制饼形图

4 def drawPie(grades):

5 labels = ['A', 'B', 'C', 'D', 'E']

6 gradeGroup = {}

7 for grade in grades:

8 gradeGroup[grade] = gradeGroup.get(grade, 0) + 1

9 #创建饼形图

10 #第一个参数为扇形的面积

11 #labels参数为扇形的说明文字

12 #autopct参数为扇形占比的显示格式

13 pyplot.pie([gradeGroup.get(label, 0) for label in labels], labels=labels, autopct='%1.1f%%')

14 pyplot.title('Grades Of Male Students')

15 pyplot.show()

16

17 drawPie(grades)

绘制出来的饼形图效果如下:

2 定量分析(直方图、累积曲线)

直方图类似于柱状图,是用柱的高度来指代频数,不同的是其将定量数据划分为若干连续的区间,在这些连续的区间上绘制柱。使用Matplotlib对身高这一定量变量绘制直方图的代码如下:

1 from matplotlib import pyplot

2

3 #绘制直方图

4 def drawHist(heights):

5 #创建直方图

6 #第一个参数为待绘制的定量数据,不同于定性数据,这里并没有事先进行频数统计

7 #第二个参数为划分的区间个数

8 pyplot.hist(heights, 100)

9 pyplot.xlabel('Heights')

10 pyplot.ylabel('Frequency')

11 pyplot.title('Heights Of Male Students')

12 pyplot.show()

13

14 drawHist(heights)

直方图对应数据的密度函数,由于身高变量是属于服从正态分布的,从绘制出来的直方图上也可以直观地看出来:

使用Matplotlib对身高这一定量变量绘制累积曲线的代码如下:

1 from matplotlib import pyplot

2

3 #绘制累积曲线

4 def drawCumulativeHist(heights):

5 #创建累积曲线

6 #第一个参数为待绘制的定量数据

7 #第二个参数为划分的区间个数

8 #normed参数为是否无量纲化

9 #histtype参数为'step',绘制阶梯状的曲线

10 #cumulative参数为是否累积

11 pyplot.hist(heights, 20, normed=True, histtype='step', cumulative=True)

12 pyplot.xlabel('Heights')

13 pyplot.ylabel('Frequency')

14 pyplot.title('Heights Of Male Students')

15 pyplot.show()

16

17 drawCumulativeHist(heights)

累积曲线对应数据的分布函数,由于身高变量是属于服从正态分布的,从绘制出来的累积曲线图上也可以直观地看出来:

3 关系分析(散点图)

在散点图中,分别以自变量和因变量作为横纵坐标。当自变量与因变量线性相关时,在散点图中,点近似分布在一条直线上。我们以身高作为自变量,体重作为因变量,讨论身高对体重的影响。使用Matplotlib绘制散点图的代码如下:

  1. ` from matplotlib import pyplot `
  2. `#绘制散点图 `
  3. `def drawScatter(heights, weights): `
  4. ` #创建散点图 `
  5. ` #第一个参数为点的横坐标 `
  6. ` #第二个参数为点的纵坐标 `
  7. ` pyplot.scatter(heights, weights) `
  8. ` pyplot.xlabel('Heights') `
  9. ` pyplot.ylabel('Weights') `
  10. ` pyplot.title('Heights & Weights Of Male Students') `
  11. ` pyplot.show() `
  12. ` drawScatter(heights, weights) `

我们在创建数据时,体重这一变量的确是由身高变量通过线性回归产生,绘制出来的散点图如下:

4 探索分析(箱形图)

在不明确数据分析的目标时,我们对数据进行一些探索性的分析,通过我们可以知道数据的中心位置,发散程度以及偏差程度。使用Matplotlib绘制关于身高的箱形图的代码如下:

1 from matplotlib import pyplot

2

3 #绘制箱形图

4 def drawBox(heights):

5 #创建箱形图

6 #第一个参数为待绘制的定量数据

7 #第二个参数为数据的文字说明

8 pyplot.boxplot([heights], labels=['Heights'])

9 pyplot.title('Heights Of Male Students')

10 pyplot.show()

11

12 drawBox(heights)

绘制出来的箱形图中,包含3种信息:

  1. Q2所指的红线为中位数
  2. Q1所指的蓝框下侧为下四分位数,Q3所指的蓝框上侧为上四分位数,Q3-Q1为四分为差。四分位差也是衡量数据的发散程度的指标之一。
  3. 上界线和下界线是距离中位数1.5倍四分位差的线,高于上界线或者低于下界线的数据为异常值。

results matching ""

    No results matching ""