• 描述性统计
  • 频数分布图
  • 正态分布检验
  • 概率密度曲线拟合

#单个项目数据分析

#单个项目描述性统计
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 实现描述性统计、频数分布图、正态分布检验、概率密度曲线拟合相关推荐

  1. 用python做频数分析_使用Python进行描述性统计

    2 使用NumPy和SciPy进行数值分析 2.1 基本概念 1 from numpy import array 2 from numpy.random import normal, randint ...

  2. python画直方图成绩分析-使用Python进行描述性统计

    2 使用NumPy和SciPy进行数值分析 2.1 基本概念 1 from numpy importarray2 from numpy.random importnormal, randint3 #使 ...

  3. 数据的描述性统计与python实现

    数据的描述性统计与python实现 使用pandas导入数据 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplo ...

  4. Python描述性统计

    目录 1 描述性统计是什么? 2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度( ...

  5. 获取铁矿石和螺纹钢期货数据。对收益率序列进行描述性统计、jb检验,反正是否符合分形市场假说。计算Hurst指数,制定跨品种套利策略,并进行回测,对跨品种套利效果进行评估。寻求改进空间。

    源码已上传至github 项目简介 获取铁矿石和螺纹钢期货数据.对收益率序列进行描述性统计.jb检验,反正是否符合分形市场假说.计算Hurst指数,制定跨品种套利策略,并进行回测,对跨品种套利效果进行 ...

  6. python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现

    一.数据的描述性统计 对数据的描述性统计主要是指对结构化数据的描述分析,可从三个维度进行分析:数据的集中趋势.数据的离散程度和数据的分布形态. 描述数据集中趋势的指标有:众数.中位数.平均数(包含算数 ...

  7. python实现Shapiro-Wilk正态分布检验

    python实现Shapiro-Wilk正态分布检验 Shapiro-Wilk检验 Shapiro-Wilk检验等显著性假设检验方法,则从统计学意义上将样本分布与正态分布进行比较,以确定数据是否显示出 ...

  8. python实现Anderson-Darling正态分布检验

    python实现Anderson-Darling正态分布检验 正态性检验 确定您绘制样本所基于的总体是否呈非正态分布的单样本假设检验.许多统计过程均依赖于总体正态性,且使用正态性检验确定否定此假设是不 ...

  9. python花萼长度表_python描述性统计实践

    1.加载相关库和数据集 使用的库主要有:pandas.numpy.sklearn.matplotlib.seaborn 使用的数据集:sklearn库中的鸢尾花数据集 import pandas as ...

最新文章

  1. tf.keras.layers.TextVectorization 示例
  2. 本地html app跨域,本地webapp是怎么解决跨域问题的?
  3. zh-cn 与 zh-hans 是什么关系、有什么区别
  4. 电大2007计算机机考专科试题,中央电大2007-2008学年度第一学期期末考试计算机网络专业计算机网络试题2008年1月...
  5. ServiceMix部署自定义开发程序(ActiveMQ和Kafka实现)
  6. 线段树专题-等差子序列 BZOJ-2124
  7. 基于对象的JavaScript编程
  8. matlab mtime,matlab中的视频分析工具箱 提供matlab中的视频分析工具 - 下载 - 搜珍网...
  9. Citrix 整体架构 端口列表 Tcp Port
  10. 慕课版软件质量保证与测试(第四章.课后作业)
  11. EAN-13码知识及其校验码的计算方法
  12. GPS开发、定位修改
  13. 毕业设计资料python RCQ读者书库程序源码加文档
  14. 主流前端-后端-数据库总结--前端框架篇
  15. 如何查看kali的详细ip地址网关_在Linux中检查默认网关或路由器IP地址的四个命令...
  16. Unity用户手册-IL2CPP
  17. 快速拿下CKA认证考试,这些要求和tips你得知道
  18. VCS+Verdi 安装及破解过程(Ubuntu)【1】
  19. 手把手教你,如何用Python做副业月入10000+!
  20. 驾考宝典科目一2015免费版

热门文章

  1. Java程序员兼职平台推荐
  2. 自然语言处理——中文——网民疫情情绪情感分析 DataFountain
  3. (五)arm裸机开发---主频和时钟配置
  4. 关于STM32H743的两串口调试纪录笔记
  5. STM32H743,基于LL库实现adc采样(ADC+DMA+TIM)
  6. 双语的c语言教程,C语言程序设计课程双语教学探索与实践
  7. 熟练使用计算机进行备课,教师信息技术能力提升工程总结
  8. hibernate查询方式总结(四)之QBC,QBE查询
  9. R语言和医学统计学系列(1):t检验
  10. Tensorflow2.1入门 第六章:循环神经网络