python导入数据画直方图加正态曲线_Python数据分析入门 - 正态分布

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

#matplotlib是最著名的Python图表绘制扩展库,它支持输出多种格式的图形图像,并且可以使用多种GUI界面库交互式地显示图表。使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。

%config InlineBackend.figure_format= 'retina'

#内嵌图表的输出格式缺省为PNG,可以通过%config命令修改这个配置。%config命令可以配置IPython中的各个可配置对象,其中InlineBackend对象为matplotlib输出内嵌图表时所使用的对象,我们配置它的figure_format="svg",这样将内嵌图表的输出格式修改为SVG。

%magic

#查询magic command魔法命令的方法

#IPython提供了许多魔法命令,使得在IPython环境中的操作更加得心应手。魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。

#参考 http://hyry.dip.jp/tech/book/page/scipynew/ipython-200-notebook-magic.html

stakes_data = pd.read_csv('stakes.csv')

#此处导入正确,没有遇到小笼包(李佳)提到的csv文件格式无法识别的问题,若遇到,可参考http://www.jianshu.com/p/296ae7538d1f

stakes_data.head(5) #看看前五个数据

len(stakes_data) #看看数据集的大小

stakes_data.shape #或者利用T1里提到的办法查询数据的维度

time = stakes_data['time'] #如果是多维度,可以提取某列数据,(行怎么办?)

slice1 = stakes_data[0:3] #可以对行进行切片

#参考此pandas教程 http://www.cnblogs.com/chaosimple/p/4153083.html

#pandas里面的数据框DataFrame数据类型,其实和R语言里面的差不多。访问某一列可以通过b['state']和b.state这两种方法进行,但是输出的pandas里面的Series这种数据类型,因此b['state'].index()返回Index([0,1], dtype=object)。

slice1

4ffca0a43476

slice1

row = stakes_data.loc[1:3,:] #实现查询某行,或按行查询

# 关于pandas库里面的行列操作 参考 http://blog.csdn.net/xiaodongxiexie/article/details/53108959

row

4ffca0a43476

row

mean = time.mean() #求样本均值

mean

sd = time.std() #求样本标准差

sd

max = time.max() #求样本极大值以便确定范围上限

max

min = time.min() #求样本极小值以便确定范围下限

min

def normfun(x,mu,sigma):

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

return pdf

#定义normfun的概率分布密度函数如上,即定义器为以x为,mu为期望,sigma为标准差的正态分布。

#利用numpy中的arange函数构造最小145,最大155,步长为0.1的等差数组

x = np.arange(145,155,0.1)

y = normfun(x,mean,sd)

plt.plot(x,y) #看一眼正态图

4ffca0a43476

正态图

plt.hist(time, bins = 6,rwidth=0.9,normed=True) #画time数据的直方图,nomred=True则显示其占比(概率密度)。 参考http://www.cnblogs.com/python-life/articles/6084059.html

plt.rcParams["font.family"] = "SimHei" #修改字体

plt.title(u'赛马时间正态分布图') #直方图命名后拿出来看看

plt.xlabel(u'时间')

plt.ylabel(u'占比率')

4ffca0a43476

直方图

plt.hist(time, bins = 6,rwidth=0.9,normed=True) #画time数据的直方图

plt.rcParams["font.family"] = "SimHei" #修改字体

plt.plot(x,y) #把x,y构造的正态曲线放进来

plt.title(u'赛马时间正态分布图') #直方图命名后拿出来看看

plt.xlabel(u'时间')

plt.ylabel(u'占比率')

4ffca0a43476

合并

这次作业里各个包的很多基础知识存在问题,查了很多链接也放在文内了。构造pdf的时候用到arange构造了一个等差数列这一点不太理解,回头再思考一下。

数据上,样本数据还是蛮符合正态分布的,正态分布是经典统计里面的基石,回归分析都是围绕着它来的,基于pdf的很多证明,比如F分布,Chi分布和正态分布的关系都是原来推倒过的,现在忘了不少,有空再捡起来吧,目前还是黑箱状态比较好,囫囵吞枣,用得上再说,不必纠结那么细。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值