Scipy 是世界上著名的Python开源科学计算库,建立在Numpy之上。它增加的功能包括数值积分、最优化、统计和一些专用函数。
Scipy函数库在Numpy的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。
Scipy.io进行mat文件的写入与读取
from scipy import io
io.savemat('1.mat',{'array':1}) # io.savemat(file_name,mdict)
io.loadmat('1.mat') # io.loadmat(file_name)
利用Scipy的scipy.stats包中的统计函数实现分析随机数的功能
Stats提供了产生连续性分布的函数:
- 均匀分布(uniform)
- 正态分布(norm)
- 贝塔分布(beta)
- 离散分布
- 伯努利分布(bernoulli)
- 几何分布(geom)
- 泊松分布(poisson)
一、生成随机数
- stats.norm
x=stats.norm.rvs(size=20) # 生成20个正态分布随机数
- stats.uniform
y=stats.uniform.rvs(size=20)
# 生成20个[0,1]均匀分布的随机数 - stats.beta
z=stats.beta.rvs(size=20,a=3,b4)
# 生成20个服从参数a=3,b=4的贝塔分布随机数 - stats.poisson
r=stats.poisson.rvs(0.6,loc=0,size=20)
# 生成20个服从泊松分布的随机数
二、计算随机数的均值和标准差
stats.norm.fit
:利用正态分布去拟合生成的数据,得到其均值和标准差
三、计算随机数的偏度
1、概念:偏度(skewness) ---- 描述的是概率分布的偏斜(非对称)程度。偏度检验有两个返回值,其中第二个返回值是p-value,即观察到的数据集服从正态分布的概率,取值范围为0~1
2、利用stats.skewtest()
计算偏度
3、
正偏度分布:右侧尾比左侧尾长,即大数值一端发生的次数较少(均值>中位数) ;
负偏度分布:左侧尾比右侧尾长,即大数值一端发生的次数较多(均值<中位数);
正态分布的偏度为0。
四、计算随机数的峰度
1、概念:峰度(kurtosis) – 描述的是概率分布曲线的陡峭程度
2、利用stats.kurtosistest()
计算峰度
正态分布的峰度为3,excess_k ( 注: excess_k = kurtosis - 3) 为0,
低阔峰(platykurtic):相对于正态分布来说更扁平(excess_k < 0)
高狭峰(leptokurtic):相对于正态分布来说更陡峭 (excess_k > 0)
五、检查随机数服从正态分布的程度
1、概念:正态性检验(normality test)---- 检查数据集服从正态分布的程度。该检验同样有两个返回值,其中第二个返回值为p-value。
2、利用 stats.normaltest()
来检验
一般情况下pvalue > 0.05即表示服从正态分布。
六、计算数据所在区段中某一百分比处的数值
1、利用 scoreatpercentile计算在某一百分比位置上的数值:
格式:scoreatpercentile (数据集,百分比)
七、从某数值出发找到对应的百分比
1、利用 percentileofscore计算某数值对应的百分比:
格式: percentileofscore(数据集,数值)
八、直方图显示
import matplotlib.pyplot as plt
plt.hist(data) # 设置直方图
plt.show() #显示直方图