python 实现描述性统计、频数分布图、正态分布检验、概率密度曲线拟合
- 描述性统计
- 频数分布图
- 正态分布检验
- 概率密度曲线拟合
#单个项目数据分析
#单个项目描述性统计
from scipy.stats import chi2 # 卡方分布
from scipy.stats import norm # 正态分布
from scipy.stats import t # t分布
from scipy.stats import f # F分布
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import chi2_contingency # 列联表分析# rvs: Random Variates
# pdf: Probability Density Function 概率密度函数
# cdf: Cumulative Distribution Function 概率密度函数的积分函数
# sf: Survival Function (1-CDF)
# ppf: Percent Point Function (Inverse of CDF) 百分点函数,概率密度函数的积分值
# isf: Inverse Survival Function (Inverse of SF)
# stats: Return mean, variance, (Fisher’s) skew, or (Fisher’s) kurtosis
# moment: non-central moments of the distribution# ppf以概率的形式,查询函数值-----------类似分布临界表# example -------------------------------------------------------- 对连续数据进行正态拟合
plt.figure()
train = pd.read_csv("test.csv")
train_Age = train.dropna(subset=['p1'])
M_S = stats.norm.fit(train_Age['p1']) # 正态拟合的平均值与标准差plt.hist(train_Age['p1'],bins=30, normed=1, facecolor='blue', alpha=0.5) # 原本的概率直方图
train_Age['p1'].plot(kind='kde',secondary_y=True) # 原本的概率密度分布图normalDistribution = stats.norm(M_S[0], M_S[1]) # 绘制拟合的正态分布图#x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)
x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)
plt.plot(x, normalDistribution.pdf(x), c='orange')
plt.xlabel('reqirement time')
plt.title('reqirement time on NormalDistribution', size=20)
plt.legend(['Origin', 'NormDistribution'])from scipy import integrate
for n in range(0,400,1):x=np.linspace(0,n,1000)y=normalDistribution.pdf(x) p=integrate.trapz(y, x)if p>0.8:print (n)break
#多个项目批量输出分析结果
from scipy.stats import chi2 # 卡方分布
from scipy.stats import norm # 正态分布
from scipy.stats import t # t分布
from scipy.stats import f # F分布
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import chi2_contingency # 列联表分析
from scipy import integrate
from scipy.stats import kstest #检验正态分布
from statsmodels.stats.diagnostic import lillifors
# rvs: Random Variates
# pdf: Probability Density Function 概率密度函数
# cdf: Cumulative Distribution Function 概率密度函数的积分函数
# sf: Survival Function (1-CDF)
# ppf: Percent Point Function (Inverse of CDF) 百分点函数,概率密度函数的积分值
# isf: Inverse Survival Function (Inverse of SF)
# stats: Return mean, variance, (Fisher’s) skew, or (Fisher’s) kurtosis
# moment: non-central moments of the distribution# ppf以概率的形式,查询函数值-----------类似分布临界表train = pd.read_csv("test.csv")
#设置画布大小
fig = plt.figure(figsize=(16, 16))
#循环:依次计算p1~p46#projects_index = ['p1', 'p2', 'p3', 'p4','p5', 'p6', 'p7', 'p8','p9', 'p10','p11', 'p12', 'p13', 'p14','p15', 'p16', 'p17', 'p18','p19', 'p20', 'p21', 'p22', 'p23', 'p24','p25', 'p26', 'p27', 'p28','p29', 'p30', 'p31', 'p32', 'p33', 'p34','p35', 'p36', 'p37', 'p38','p39', 'p40','p41', 'p42', 'p43', 'p44','p45', 'p46' ]
projects_index = ['p1', 'p2', 'p3', 'p4','p5', 'p6', 'p7', 'p8','p9', 'p10','p11', 'p12', 'p14', 'p15', 'p16', 'p17', 'p18','p19', 'p20','p21', 'p22', 'p23', 'p24','p25', 'p26', 'p27', 'p28','p29', 'p30','p31', 'p32', 'p33', 'p34','p35', 'p36', 'p38', 'p40','p41', 'p42', 'p43', 'p45', 'p46' ]
#projects_index = ['p1','p2','p3','p4','p5', 'p6', 'p7', 'p8']
count=0#计算统计量
#创建一个空的Dataframe
Req_Leadtime = pd.DataFrame(columns=('项目名称','有效需求总数','平均值','中位数','众数','标准差','p值','需求交付周期阈值')) for index in projects_index:count+=1 #计数#print(count)print(index)train_time = train.dropna(subset=[index])# 正态拟合的平均值与标准差M_S = stats.norm.fit(train_time[index]) # 0-画子图 #ax = fig.add_subplot(14, 3, count)#1-依次作图保存# 原本的概率直方图plt.hist(train_time[index],bins=30, normed=1, facecolor='blue', alpha=0.5) # 原本的概率密度分布图train_time[index].plot(kind='kde',secondary_y=True) # 绘制拟合的正态分布图normalDistribution = stats.norm(M_S[0], M_S[1]) x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)plt.plot(x, normalDistribution.pdf(x), c='orange')#计算平均值avg_leadtime = np.mean(train_time[index]) #计算中位数med_leadtime = np.median(train_time[index]) #计算众数mode_leadtime = stats.mode(train_time[index])[0][0] #计算标准差#std_leadtime = pd.std(train_time[index])std_leadtime = np.std(train_time[index], ddof=1) #检验正态分布,from scipy.stats import kstest,p为正态检验p值,>0.05#rvs:待检验的数据#cdf:检验方法,这里我们设置为‘norm’,即正态性检验#alternative:默认为双尾检验,可以设置为‘less’或‘greater’作单尾检验#q,p = kstest(train_time[index], 'norm',(avg_leadtime,std_leadtime))#print(q,p)#p = stats.shapiro(train_time[index])if len(train_time[index])<8:p = -1else:if len(train_time[index])<50:q,p = stats.normaltest(train_time[index])else:if 50<=(len(train_time[index]))<=300:#p = lillifors(train_time[index])q,p = kstest(train_time[index], 'norm')else:q,p = kstest(train_time[index], 'norm')print(p) #计算80%需求交付周期for n in range(0,400,1):x=np.linspace(0,n,1000)y=normalDistribution.pdf(x) h=integrate.trapz(y, x)if h>0.8:print (n)break #计算统计量#将计算结果逐行插入Req_Leadtime,注意变量要用[]括起来,同时ignore_index=True,否则会报错,ValueError: If using all scalar values, you must pass an indexvalid_req_counts = len(train_time[index])req_leadtime_avg = avg_leadtimereq_leadtime_med = med_leadtimereq_leadtime_mode = mode_leadtimereq_leadtime_std = std_leadtimereq_leadtime_p = p req_leadtime_ref = nReq_Leadtime = Req_Leadtime.append(pd.DataFrame({'项目名称':[index],'有效需求总数':[valid_req_counts],'平均值':[req_leadtime_avg],'中位数':[req_leadtime_med],'众数':[req_leadtime_mode],'标准差':[req_leadtime_std],'p值':[req_leadtime_p],'需求交付周期阈值':[req_leadtime_ref]}),ignore_index=True)print(req_leadtime_p,p)plt.xlabel('Req leadtime')plt.title("(%s) Req_leadtime on NormalDistribution, p = %10.3f, Req_leadtime_req = %d" %(index,p,n),fontsize=20)plt.legend(['Origin', 'NormDistribution']) # 0-自动调整子图的间距#plt.tight_layout() #保存图片plt.savefig("image/'" + index + "'.png")#单独输出图片,需要清空画布plt.clf()#输出统计量
print(Req_Leadtime)
#输出到txt中
Req_Leadtime.to_excel('Req_Leadtime.xlsx', encoding='utf-8', index=True, header=True)
python 实现描述性统计、频数分布图、正态分布检验、概率密度曲线拟合相关推荐
- 用python做频数分析_使用Python进行描述性统计
2 使用NumPy和SciPy进行数值分析 2.1 基本概念 1 from numpy import array 2 from numpy.random import normal, randint ...
- python画直方图成绩分析-使用Python进行描述性统计
2 使用NumPy和SciPy进行数值分析 2.1 基本概念 1 from numpy importarray2 from numpy.random importnormal, randint3 #使 ...
- 数据的描述性统计与python实现
数据的描述性统计与python实现 使用pandas导入数据 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplo ...
- Python描述性统计
目录 1 描述性统计是什么? 2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度( ...
- 获取铁矿石和螺纹钢期货数据。对收益率序列进行描述性统计、jb检验,反正是否符合分形市场假说。计算Hurst指数,制定跨品种套利策略,并进行回测,对跨品种套利效果进行评估。寻求改进空间。
源码已上传至github 项目简介 获取铁矿石和螺纹钢期货数据.对收益率序列进行描述性统计.jb检验,反正是否符合分形市场假说.计算Hurst指数,制定跨品种套利策略,并进行回测,对跨品种套利效果进行 ...
- python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现
一.数据的描述性统计 对数据的描述性统计主要是指对结构化数据的描述分析,可从三个维度进行分析:数据的集中趋势.数据的离散程度和数据的分布形态. 描述数据集中趋势的指标有:众数.中位数.平均数(包含算数 ...
- python实现Shapiro-Wilk正态分布检验
python实现Shapiro-Wilk正态分布检验 Shapiro-Wilk检验 Shapiro-Wilk检验等显著性假设检验方法,则从统计学意义上将样本分布与正态分布进行比较,以确定数据是否显示出 ...
- python实现Anderson-Darling正态分布检验
python实现Anderson-Darling正态分布检验 正态性检验 确定您绘制样本所基于的总体是否呈非正态分布的单样本假设检验.许多统计过程均依赖于总体正态性,且使用正态性检验确定否定此假设是不 ...
- python花萼长度表_python描述性统计实践
1.加载相关库和数据集 使用的库主要有:pandas.numpy.sklearn.matplotlib.seaborn 使用的数据集:sklearn库中的鸢尾花数据集 import pandas as ...
最新文章
- tf.keras.layers.TextVectorization 示例
- 本地html app跨域,本地webapp是怎么解决跨域问题的?
- zh-cn 与 zh-hans 是什么关系、有什么区别
- 电大2007计算机机考专科试题,中央电大2007-2008学年度第一学期期末考试计算机网络专业计算机网络试题2008年1月...
- ServiceMix部署自定义开发程序(ActiveMQ和Kafka实现)
- 线段树专题-等差子序列 BZOJ-2124
- 基于对象的JavaScript编程
- matlab mtime,matlab中的视频分析工具箱 提供matlab中的视频分析工具 - 下载 - 搜珍网...
- Citrix 整体架构 端口列表 Tcp Port
- 慕课版软件质量保证与测试(第四章.课后作业)
- EAN-13码知识及其校验码的计算方法
- GPS开发、定位修改
- 毕业设计资料python RCQ读者书库程序源码加文档
- 主流前端-后端-数据库总结--前端框架篇
- 如何查看kali的详细ip地址网关_在Linux中检查默认网关或路由器IP地址的四个命令...
- Unity用户手册-IL2CPP
- 快速拿下CKA认证考试,这些要求和tips你得知道
- VCS+Verdi 安装及破解过程(Ubuntu)【1】
- 手把手教你,如何用Python做副业月入10000+!
- 驾考宝典科目一2015免费版
热门文章
- Java程序员兼职平台推荐
- 自然语言处理——中文——网民疫情情绪情感分析 DataFountain
- (五)arm裸机开发---主频和时钟配置
- 关于STM32H743的两串口调试纪录笔记
- STM32H743,基于LL库实现adc采样(ADC+DMA+TIM)
- 双语的c语言教程,C语言程序设计课程双语教学探索与实践
- 熟练使用计算机进行备课,教师信息技术能力提升工程总结
- hibernate查询方式总结(四)之QBC,QBE查询
- R语言和医学统计学系列(1):t检验
- Tensorflow2.1入门 第六章:循环神经网络