正态分布(normal distribution),normal: 常见的,典型的。正态分布即常见的分布。
正态分布能代表多种多样的数据类型(即常见),正态分布概率密度曲线呈钟形,有对称美,计算概率方便(有概率表)。且在一定条件下,其他分布可以转化为正态分布,应用广泛。
正态分布关健在于两个参数:均值和方差
对于正态分布曲线而言,均值表示其曲线中心轴的位置,方差代表曲线的胖瘦。因为方差代表数据的波动情况,即波动越大,数据相对于均值的取值范围变大,即图形会变胖。
下面对历届赛马比赛冠军所用时间数据进行分析。
1.程序代码
#2017.03.21
#case study:stakes data
#导入必要的数据分析和做图的模块
#numpy 科学计算包
import numpy as np
#pandas 数据分析包
import pandas as pd
#matplotlib 绘图包
import matplotlib .pyplot as plt
#matplotlib 数值函数 可视化脚本数据
import matplotlib.mlab as mlab
# %magic keyword 控制nootebook的特殊命令
#运行 %magic 可查看magic的各个命令
# %matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中
# inline表示将图表嵌入到Notebook中
% matplotlib inline
#使画出来的图支持retina,retina一种显示技术
#可以将把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度
% config OnlineBackend.figure_format = 'retina'
#导入stakes数据
stakes_data = pd.read_csv('stakes.csv')
#查看数据的前5行
#stakes_data.head(5)
#查看一共有多少行数据
#len(stakes_data)
#提取数据中的'time'列
time = stakes_data['time']
#计算平均值和标准差
mean_time = time.mean()
std_time = time.std()
#数据可视化
#x取值从144-155以0.01为步长
#min = 146 max = 153.2
x = np.arange(144,155,0.01)
y = mlab.normpdf(x,mean,std)
#y = normfun(x,mean,std)
plt.plot(x,y)
#设置显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.hist(time,bins = 13, rwidth = 0.9, normed = True)
plt.title('历届赛马比赛冠军所用时间分布')
plt.xlabel('time')
plt.ylabel('Probability')
print("平均值:"+ str(mean_time))
print("方差:"+ str(std_time))
plt.show()
2.结果
平均值:149.22101123595513
方差:1.6278164717748154
3.结果分析
历届赛马比赛冠军所用时间平均值为149.22,大部分选手夺冠的所用时间在147到151范围内,只有少部分选手夺冠时间小于147,即对于一般赛马选手来说,夺冠时间要小于147较难达到。还有部分选手夺冠时长超过150,最长时间为153左右。
方差为1.63,数据波动不大,有68%的选手夺冠时间在149.22-1.63 到 149.22+1.63 之间。
同时,我们可以根据计算的均值和方差对选手夺冠时间范围进行预测:
如果参加比赛的选手可以将比赛时间控制在[146.03,153.14]范围内(149.22-1.63×1.69~149.22+1.63×1.69),则他有95%的可能性夺冠。