最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章。
文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义数据的条形图和随机的条形图的一些方法,并且提供了一些相关链接,可作为学习matplotlib和numpy的资源,希望对读者也有帮助。
更优美的格式见这里
1
|
import xlrd
|
1
|
data = xlrd.open_workbook(‘excelFile.xls‘)
|
获取一个工作表
1
|
table = data.sheets()[0] #通过索引顺序获取
|
获取整行和整列的值(数组)
1
|
table.row_values(i)
|
循环行列表数据
1
|
for i in range(nrows ):
|
单元格
1
|
cell_A1 = table.cell(0,0).value
|
使用行列索引
1
|
cell_A1 = table.row(0)[0].value
|
简单的写入
1
|
row = 0
|
1
|
import xlrd
|
1
|
import xlrd
|
图2
且可求得数据的均值和标准差分别为:476.743785851和104.816562585
由图可见,绿色条形图是$\mu$=476.743785851,$\sigma$=104.816562585的正态分布条形图,而红色是四级成绩数据的分布图,虽然由于数据较少(500多个数据),所以拟合较差,但是可以看出成绩数据还是基本满足正态分布的。
不知道为啥,正态曲线没有画出来,单独画正态曲线是可以画出来的,有待研究。
绘图都可以调用matplotlib.pyplot库来进行,其中的hist函数可以直接绘制直方图。
调用方式:
1
|
n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor=‘black‘, edgecolor=‘black‘,alpha=1,histtype=‘bar‘)
|
hist的参数非常多,但常用的就这六个,只有第一个是必须的,后面四个可选
arr: 需要计算直方图的一维数组
bins: 直方图的柱数,可选项,默认为10
normed: 是否将得到的直方图向量归一化。默认为0
facecolor: 直方图颜色
edgecolor: 直方图边框颜色
alpha: 透明度
histtype: 直方图类型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直方图向量,是否归一化由参数normed设定
bins: 返回各个bin的区间范围
patches: 返回每个bin里面包含的数据,是一个list
摘自这里 from denny
库的主页
gallary
matplotlib的一些示例及其代码,是很好的学习工具。
用python做科学计算
用Python作科学计算的一些工具
xlrd文档
numpy的一些方法
【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用
原文:http://www.cnblogs.com/whatbeg/p/5390464.html