Python画正态分布,python正态分布图形画法

  Python画正态分布,python正态分布图形画法

  我知道statsmodels.tools.tools.ECDF,但是由于计算empricial累积分布函数(ECDF)是非常直接的,而且我希望最小化项目中的依赖项,所以我希望手动编写它。

  在给定的list()/np.array()熊猫。系列中,每个元素的分布函数可以计算为维基百科给出:

  下面是熊猫数据框dfser,我想得到价值观念列的ecdf。文中还给出了两个一次线性解。

  有没有更快的方法可以做到这一点?速度在我的应用程序中很重要注意,在我的例子中,索引是唯一的标识符,所以我不能重置它们。

  将数组作为铭牌导入

  进口熊猫作为螺纹中径

  #所有指数都是唯一的,但可能有重复的测量值(属于不同的指数)。

  dfser=pd .DataFrame({group:[a , b , b , a , d , c , e , e , c , a , b , d , c , d , e , e , a],

  值:[2.01899E-06,1.12186E-07,8.97467E-07,2.91257E-06,1.93733E-05,

  0.00017889,0.000120963,4.27643E-07,3.33614E-07,2.08352E-12,

  1.39478E-05,4.28255E-08,9.7619E-06,8.51787E-09,1.28344E-09,

  3.5063E-05,0.01732035,2.08352E-12]},

  index=[123532235645747856345245845248901712162126,

  198,748, 127,395] )

  #我的第一个解决方案-列表理解

  dfser[ ecdf ]=[sum(dfser[ values ]=x)/float(dfser[ values ]].size) for x in dfser[values]]

  #我的第二个解决方案-排名

  dfser[秩]=dfser[值]。排名(升序=0)

  dfser[ ecdf _ r ]=(len(dfser)-dfser[ rank ]1)/len(dfser)

  dfser

  组值分布函数等级ecdf_r

  123 a 2.018990 e-06

  532 b 1.121860e-07

  235 b 8.974670 e-07 0.50000 10.0 0.500000

  645 a 2.912570 e-06 0.61111 8.0 0.611111

  747d 1.937330 e-05 0.77778 5.0 0.777778

  856摄氏度

  345 e 1.209630 e-04 0.88889 3.0 0.888889

  245 e 4.276430 e-07 0.44444 11.0 0.444444

  845 c 3.336140 e-07 0.38889 12.0 0.388889

  248 a 2.083520 e-12 0.111111 17.5 0.083333

  901 b 1.394780 e-05 0.72222 6.0 0.72222

  712d 4.282550 e-08

  162d 9.761900 e-06 0.66667 7.0 0.666667

  126 c 8.517870 e-09 0.222222 15.0 0.222222

  198d 1.283440 e-09 0.166667 16.0 0.166667

  748 e 3.506300e-05

  127 e 1.732035 e-02 1.000000 1.0 1.000000

  395 a 2.083520 e-12 0.111111 17.5 0.083333

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: