打开 jupyter notebook
import pandas as pd # 导入另一个包“pandas” 命名为 pd,理解成pandas是在 numpy 基础上的升级包
import numpy as np #导入一个数据分析用的包“numpy” 命名为 np
import matplotlib.pyplot as plt # 导入 matplotlib 命名为 plt,类似 matlab,集成了许多可视化命令
#jupyter 的魔术关键字(magic keywords)
#在文档中显示 matplotlib 包生成的图形
# 设置图形的风格
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
data = pd.read_csv('stakes.csv') #载入数据文件
data.head(5) #查看前5个头部数据
len(data) #查看数据长度
89
time = data["time"] #把数据集中的 time 定义为 time
#mean均值,是正态分布的中心,把 数据集中的均值 定义为 mean
mean = time.mean()
mean
149.22101123595513
#S.D.标准差,把数据集中的标准差 定义为 std
std = time.std()
std
1.6278164717748154
#正态分布的概率密度函数。可以理解成 x 是 mu(均值)和 sigma(标准差)的函数
def normfun(x,mu,sigma):
pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))
return pdf
概率密度函数公式
# 设定 x 轴前两个数字是 X 轴的开始和结束,第三个数字表示步长,或者区间的间隔长度
x = np.arange(142,157,0.1)
#设定 y 轴,载入刚才的正态分布函数
y = normfun(x, mean, std)
plt.plot(x,y)
#画出直方图,最后的“normed”参数,是赋范的意思,数学概念
plt.hist(time, bins=10, rwidth=0.9, normed=True)
plt.title('Time distribution')
plt.xlabel('Time')
plt.ylabel('Probability')
#输出
plt.show()
对于正态分布的理解
- 把直方图和正态分布曲线放在一起看的时候,会发现不同的直方图组数会有完全不同的效果,上图采用的组数为10,如果把组数增加到40就会变成下图。因为样本数为89,并不是很大,所以看起来好像分布并不是很规则,只是有回归正态分布的倾向,如果增加样本数量的话,跟抛硬币一样,n 足够大的时候,也许会更加接近正态分布。所以数据的规律是一点点的呈现的,数据量越大,就越容易验证假说,找到规律,这也就是“大数据”的力量。
- 正态分布是很比较常见的,我觉得在数据分析中需要注意的是分布的变化,比如:原本认为应该符合正态分布的数据,结果不太符合,会不会有什么问题没有考虑到?或者出现了某种干扰因素。另外在对比两个不同数据集的差异时,也可以观察他们的正态分布情况,均值的差异和波动性的差异,可以反应出很多问题。
本文为 泰阁志-解密大数据 第三次作业,了解更多请关注微信“泰阁志”
关于 python 与 jupyter notebook,包括 magic keyword,参考了@鱼心 的教程:
网友评论
解答了我关于normed疑问 感谢~
hist中的normed没那么高深,就是吧直方图纵坐标中的频数变成频率,仔细观察坐标轴,和第一课的作业比较。