最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章。

文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义数据的条形图和随机的条形图的一些方法,并且提供了一些相关链接,可作为学习matplotlib和numpy的资源,希望对读者也有帮助。

更优美的格式见这里

工具

Python 3.5

xlrd模块

numpy模块及一些依赖模块(安装请自行查询方法,绝大部分pip就可搞定)

matplotlib绘图模块

xlrd基本用法

1、导入模块

1

import xlrd

2、打开Excel文件读取数据

1

data = xlrd.open_workbook('excelFile.xls')

3、使用技巧

获取一个工作表

1

2

3

table = data.sheets()[0] #通过索引顺序获取

table = data.sheet_by_index(0) #通过索引顺序获取

table = data.sheet_by_name(u'Sheet1')#通过名称获取

获取整行和整列的值(数组)

1

2

3

4

5

6

7

table.row_values(i)

table.col_values(i)

```

* 获取行数和列数

```python

nrows = table.nrows

ncols = table.ncols

循环行列表数据

1

2

for i in range(nrows ):

print table.row_values(i)

单元格

1

2

cell_A1 = table.cell(0,0).value

cell_C4 = table.cell(2,3).value

使用行列索引

1

2

cell_A1 = table.row(0)[0].value

cell_A2 = table.col(1)[0].value

简单的写入

1

2

3

4

5

6

7

8

row = 0

col = 0

#类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype = 1 value = '单元格的值'

xf = 0 # 扩展的格式化

table.put_cell(row, col, ctype, value, xf)

table.cell(0,0) #单元格的值'

table.cell(0,0).value #单元格的值'

画折线图

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

import xlrd

import numpy as np

import matplotlib.pyplot as plt

data = xlrd.open_workbook('D:\\Python Workspace\\Data\\cet4.xls')

table = data.sheets()[0] #sheet 0

col5 = table.col_values(5)[1:] #取第5列的成绩,并去掉列属性名称

count = [0 for i in range(0,650)] #初始化count

x = [i for i in range(0,650)]

for i in col5:

num = int(i)

count[num] += 1 #统计每个人数的人数

plt.xlabel('Score')

plt.ylabel('Number of people')

plt.title('Distribution of CET-4 Scores')

plt.ylim(0,8)

plt.plot([i for i in range(250,650) if count[i] != 0],[i for i in count[250:] if i != 0],linewidth=1) #画出折线图

plt.show()

图1

画直方图并与正态分布直方图对比

import xlrd

import numpy as np

from math import *

import pylab as pl

import matplotlib.pyplot as plt

data = xlrd.open_workbook('D:\\Python Workspace\\Data\\cet4.xls')

table = data.sheets()[0] #sheet 0

col5 = table.col_values(5)[1:]

ha = [int(i) for i in col5] #成绩数据

mu = np.mean(ha) #平均值

sigma = np.std(ha) #标准差

data = np.random.normal(mu,sigma,1000) #生成正态分布随机数据

x = np.linspace(0,700,1000)

y = (1. / sqrt(2 * np.pi) / sigma)*np.exp( -((x-mu)**2/(2*sigma**2)) )

plt.hist(data,bins=100,facecolor='g',alpha=0.44)

plt.hist(ha,bins=70,facecolor='r',histtype='stepfilled')

plt.plot(x,y,color='b') #正态分布曲线

plt.xlabel('Score')

plt.ylabel('Number of people')

plt.title('Distribution of CET-4 Scores')

plt.show()

图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

一些链接

matplotlib的一些示例及其代码,是很好的学习工具。

用Python作科学计算的一些工具

python体测成绩数据分析_【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用相关推荐

  1. python体测成绩数据分析统计服_体测成绩数据分析

    import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib.pyplot ...

  2. python体测成绩数据分析_Django xadmin 体测成绩管理平台总结

    Django xadmin 体测成绩管理平台总结 这是写给自己总结,记录一下历史10天开发一个小web程序的经历. 起源于一个故事,做个有爱心的程序员 有个多年简书好友小赵希望我帮他做个成绩收集软件, ...

  3. python 直方图每个bin中的值_【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用...

    标签: 最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章. 文章顺带介绍了xlrd模块的一些用法和matplotli ...

  4. python用于财务数据分析_财务数据分析进阶之路

    从一个人生故事说起 刚从学校毕业的年轻人,选定一个方向,开始探索. 几年以后,探索到了边界,用力推开一扇门,勇敢的跨进去,点亮了更大的世界. 又过了许久,再次来到世界尽头,再次努力突破天花板,又见到了 ...

  5. python编程大数据分析_大数据分析Python学习技巧

    大数据分析Python是任何开发人员都应该知道的重要编程语言.许多程序员使用这种语言来构建网站,创建学习算法以及执行其他重要任务.但是尝试学习大数据分析Python可能会令人感到恐惧,沮丧和困难,尤其 ...

  6. 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用

    最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章. 文章顺带介绍了xlrd模块的一些用法和matplotlib画自定 ...

  7. python大数据实战项目_商业数据分析比赛实战,内附项目代码

    如果你对商业数据分析感兴趣.想要积累更多项目经验,那么就来看看下面这项目吧. 数据竞赛平台和鲸社区最近正在举办一场数据分析大赛,不仅带来了22w奖金和30w创业基金支持,更是提供了统一的在线比赛环境, ...

  8. python课程水平测试成绩查询_学业水平测试成绩(学业水平考试成绩查询系统)

    有人说50~70 C等70~85 B85~100 A是么? 学业水平测试实行等级计分,分为4个等级,用A.B.C.D表示.技术科目测试等级为合格.不合格.2.必修学科等级计算方法:各科原始分满分为10 ...

  9. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

最新文章

  1. 学习javascript 非常好的博客
  2. 沙场秋点兵---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十七)...
  3. zabbix监控mysql
  4. 最小拍有纹波系统仿真实验matlab代码,最小拍控制器设计.doc
  5. DOS命令大全(一)
  6. 台式电脑怎么连接手机热点_电脑搜不到手机热点 为什么搜不到手机热点
  7. 一道水的不能再水的题目
  8. LeetCode 2192. 有向无环图中一个节点的所有祖先(拓扑排序)
  9. 信息奥赛一本通(1180:分数线划定)——插入排序
  10. 超炫彩光效数码产品线条感海报PSD分层模板,炫亮抓你眼球
  11. matlab图像的空域滤波增强处理,matlab 数字图像的空域滤波代码
  12. 在群晖synoboot.img引导文件中加入网卡驱动_群晖DS1819+使用记录
  13. ComponentPattern (组合模式)
  14. springboot启动 fastDFS启动报错 mbeanExporter: defined by method 'mbeanExporter' in class path
  15. Labview视觉模块安装
  16. 视频图像去雨论文数据集主页整理总结
  17. 4G工业路由器、双卡双模工业无线路由器功能大全
  18. 计算机型号或配置,新手必看电脑配置及型号含义速成!
  19. echarts xAxis字显示不全
  20. 由浅入深配置webpack4

热门文章

  1. html好看的预约界面设计,35个漂亮的网页弹框设计
  2. nvm最全面的下载安装教程
  3. 皇家墨尔本理工大学计算机科学专业,皇家墨尔本理工大学计算机科学硕士专业.pdf...
  4. java Word 转 PDF格式
  5. 【ES6】阮一峰ES6学习之Module的加载实现
  6. 学习JavaScript
  7. 巡检各个服务器磁盘状态和作业执行状态,服务器状态巡检脚本
  8. 死亡细胞读取外部存档文件
  9. 2022-2027年(新版)中国果汁饮料行业销售渠道与营销趋势预测报告
  10. 02. Java环境搭建