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

最近获得了一些四级成绩数据,大概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、使用技巧

  • 获取一个工作表

    123
    table = data.sheets()[0]             #通过索引顺序获取table = data.sheet_by_index(0)       #通过索引顺序获取table = data.sheet_by_name(u‘Sheet1‘)#通过名称获取
  • 获取整行和整列的值(数组)
    1234567
    table.row_values(i)table.col_values(i)``` * 获取行数和列数```pythonnrows = table.nrowsncols = table.ncols
  • 循环行列表数据
    12
    for i in range(nrows ):    print table.row_values(i)
  • 单元格
    12
    cell_A1 = table.cell(0,0).valuecell_C4 = table.cell(2,3).value
  • 使用行列索引
    12
    cell_A1 = table.row(0)[0].valuecell_A2 = table.col(1)[0].value
  • 简单的写入
    12345678
    row = 0col = 0 #类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorctype = 1 value = ‘单元格的值‘xf = 0 # 扩展的格式化table.put_cell(row, col, ctype, value, xf)table.cell(0,0)  #单元格的值‘table.cell(0,0).value #单元格的值‘

画折线图

1234567891011121314151617181920212223
import xlrdimport numpy as npimport 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)]  #初始化countx = [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

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

12345678910111213141516171819202122232425262728
import xlrdimport numpy as npfrom math import *import pylab as plimport 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

库的主页
gallary

matplotlib的一些示例及其代码,是很好的学习工具。
用python做科学计算

用Python作科学计算的一些工具
xlrd文档
numpy的一些方法

时间: 2024-07-29 18:21:02

【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用的相关文章

Python——数据分析,Numpy,Pandas,matplotlib

由于图片内容太多,请拖动至新标签页再查看 Python--数据分析,Numpy,Pandas,matplotlib 原文地址:https://www.cnblogs.com/Jery-9527/p/10804069.html

python入门、python数据分析(numpy、matplotlib、sklearn等)tensflow、爬虫、机器学习、深度学习、自然语言处理、数据挖掘、机器学习项目实战、python全栈、PHP、java、java web、openCV、hadoop、matlab、android、数据结构算法和刷题等教学视频

扫描二维码加好友购买视频,绝对优惠,谢谢支持. python入门和进阶熟练教学视频 入门: 进阶: python数据分析教学视频 python数据分析晋级班 tensorflow教程及实战 python爬虫教学 机器学习课程 深度学习课程 机器学习项目班 自然语言处理教学视频 python全栈教学视频 数据挖掘视频 PHP教学视频 java java web openCV教学视频 Hadoop教学视频 matlab教学 andriod教学视频 数据结构算法班及面试班 原文地址:https://w

python数据分析之numpy、matplotlib的使用

5.3 Python的科学计算包 - Numpy numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算.这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架. numpy在Linux下的安装已经在5.1.2中作为例子讲过,Windows下也可以通过pip,或者到下面网址下载: Obtaining NumPy & Sci

Python数据分析-可视化“大佬”之Matplotlib

Matplotlib--Python可视化包 折线图绘制 折线图适合二维的大数据集,还适合多个二维数据集的比较,主要是用于反映数据的发展趋势变化情况. ## 采用失业率的数据集进行绘制 import numpy as np from numpy import arange import pandas as pd import matplotlib.pyplot as plt dataSet = pd.read_csv("unrate.csv") # print(dataSet) dat

Python数据分析I

Python数据分析概述 数据分析的含义与目标 统计分析方法 提取有用信息 研究.概括.总结 Python与数据分析 Python: Guido Van Rossum Christmas Holiday, 1989 特点:简介 开发效率搞 运算速度慢(相对于C++和Java) 胶水特性(集成C语言) 数据分析:numpy.scipy.matplotlib.pandas.scikit-learn.keras Python数据分析大家族 numpy(Numeric Python): 数据结构基础.是

Python数据分析--Pandas知识点(三)

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, 二的基础上继续总结. 前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matplotlib配合绘制出折线图, 散点图, 饼图, 柱形图, 直方图等五大基本图形. Matplotlib是python中的一个2D图形库, 它能以各种硬拷贝的格式和跨平台的交互式环境生成高质量的图形,

Python数据分析入门

Python数据分析入门 最近,Analysis with Programming加入了Planet Python.作为该网站的首批特约博客,我这里来分享一下如何通过Python来开始数据分析.具体内容如下: 数据导入 导入本地的或者web端的CSV文件: 数据变换: 数据统计描述: 假设检验 单样本t检验: 可视化: 创建自定义函数. 数据导入 这是很关键的一步,为了后续的分析我们首先需要导入数据.通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式.在Python中,我们的操作如

python数据分析简略介绍

1.Python以其开发效率著称,致力用最短的代码完成,但是开发效率并不高,被称为"胶水语言".含义是耗时的核心代码用C/C++等更高效的语言编写,然后用python来粘合,以此来解决python的运行效率问题.但在数据任务上,python的运行效率和C/C++已经差不多了. 2.python基本命令自己要注意的几点: print u'a不等于1'   #在输出中文前可以加上u 3.python中的数据结构 4个内建的数据结构:List.Tuple.Dictionary.Set,可以统

基于Python数据分析与机器学习案例实战教程

课程--基于Python数据分析与机器学习案例实战教程 分享网盘下载--https://pan.baidu.com/s/1jHSaRAY 密码: xk37 课程背景基于数据分析与机器学习领域,使用python作为课程的实战语言,随着大数据与人工智能领域日益火爆,数据分析和机器学习建模成了当下最热门的技术,课程旨在帮助同学们快速掌握python数据分析包以及经典机器学习算法并通过对真实数据集分析进行实战演示. 课程风格通俗易懂,基于真实数据集案例实战. 主体课程分成三个大模块 (1)python数