Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于列中的元素存储和打印ECDF值_Python_Pandas_Dataframe_Math - Fatal编程技术网

Python 基于列中的元素存储和打印ECDF值

Python 基于列中的元素存储和打印ECDF值,python,pandas,dataframe,math,Python,Pandas,Dataframe,Math,我有一个数据帧df df= index value A 1 B 4 C 8 D 3 E 12 F 7 如何找到列df['value']中每个元素的经验累积分布函数(ECDF),并将相应的值存储在单独的列df['ECDF']。ECDF的公式为: 可以找到更多关于ECDF的文档。我还对绘制获得的CDF的折线图感兴趣 预期输出: df= index value ecdf A 1 0.1667 B 4

我有一个数据帧
df

df=

index  value
A      1
B      4
C      8
D      3
E      12
F      7
如何找到列
df['value']
中每个元素的经验累积分布函数(ECDF),并将相应的值存储在单独的列
df['ECDF']
。ECDF的公式为:

可以找到更多关于ECDF的文档。我还对绘制获得的CDF的折线图感兴趣

预期输出:

df=

index  value  ecdf
A      1      0.1667
B      4      0.5
C      8      0.8333
D      3      0.3333
E      12     1
F      7      0.6667
用于通过
n
method=max
(分配组中的最高等级)计算数值数据等级,并用于将其除以
值中的项数

df['ecdf'] = df['value'].rank(method='max').div(df['value'].count())
结果:

  index  value      ecdf
0     A      1  0.166667
1     B      4  0.500000
2     C      8  0.833333
3     D      3  0.333333
4     E     12  1.000000
5     F      7  0.666667

只需使用
numpy
matplotlib
即可绘制CDF:

import numpy as np
import matplotlib.pyplot as plt

sample = df['value'].values
x = np.sort(sample)
y = np.arange(1,len(x)+1)/float(len(x))
plt.plot(x, y)
输出:

df=

index  value  ecdf
A      1      0.1667
B      4      0.5
C      8      0.8333
D      3      0.3333
E      12     1
F      7      0.6667

如果您能为获得的CDF绘制一个折线图,我将不胜感激。@Ganesh我认为您可以简单地使用
df['ecdf'].plot()
。它将按照
df['ecdf'].
中给出的顺序依次绘制。但我想要一个CDF图。i、 e.
ecdf
值随着我们向右移动而增加。我想你说的是
df['ecdf'].cumsum().plot()
,对吧?不。别担心。我是从另一个解决方案得到的。