我想在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值列表应用这个函数。
谢谢!
您可以定义如下函数:
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