提问者:小点点

从Python中的值列表计算累积分布函数


我想在Python中为这个列表中的每个值计算累积分布函数;

y = 1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019...

以下功能;

F=(yi+前一个y值)/y值之和

示例:F表示1014

 F = (1014 + 1012 + 1000) / 8111 = 0.3730736

我很想知道如何在Python中对一个大的y值列表应用这个函数。

谢谢!


共2个答案

匿名用户

您可以定义如下函数:

y =  [1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019]

def cumululative(list_of_values):
    sum_values = sum(list_of_values)
    F = []  
    temp = 0
    for i in list_of_values:
        temp += i
        F.append(temp/sum_values)
    return F

print(cumululative(y))

输出:

[0.12328936012822093, 0.2480581925779805, 0.37307360374799653, 0.4982123042781408, 0.6234742941684133, 0.7488595734188139, 0.8743681420293429, 1.0]

匿名用户

请尝试以下操作:

import numpy as np

y =  [1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019]

np.cumsum(y)/np.sum(y)

结果是:

array([0.12328936, 0.24805819, 0.3730736 , 0.4982123 , 0.62347429,
       0.74885957, 0.87436814, 1.        ])

或者:

import pandas as pd

y =  pd.Series([1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019])

y.cumsum()/y.sum()

结果现在是pd.series类型:

0    0.123289
1    0.248058
2    0.373074
3    0.498212
4    0.623474
5    0.748860
6    0.874368
7    1.000000
dtype: float64