Python 3.x 如何在Python中快速计算数据帧列中每个值的概率?;

Python 3.x 如何在Python中快速计算数据帧列中每个值的概率?;,python-3.x,pandas,probability,distribution,Python 3.x,Pandas,Probability,Distribution,我想根据列数据帧自身的分布计算列数据帧中所有数据的概率。例如,我的数据如下: data 0 1 1 1 2 2 3 3 4 2 5 2 6 7 7 8 8 3 9 4 10 1 我期望的结果如下: data pro 0 1 0.155015 1 1 0.155015 2 2 0.181213 3 3 0.1573

我想根据列数据帧自身的分布计算列数据帧中所有数据的概率。例如,我的数据如下:

    data
0      1
1      1
2      2
3      3
4      2
5      2
6      7
7      8
8      3
9      4
10     1
我期望的结果如下:

    data       pro
0      1  0.155015
1      1  0.155015
2      2  0.181213
3      3  0.157379
4      2  0.181213
5      2  0.181213
6      7  0.048717
7      8  0.044892
8      3  0.157379
9      4  0.106164
10     1  0.155015
我还参考并获得了上述示例。我的代码如下:

import scipy.stats
samples = [1,1,2,3,2,2,7,8,3,4,1]
samples = pd.DataFrame(samples,columns=['data'])
print(samples)
kde = scipy.stats.gaussian_kde(samples['data'].tolist())
samples['pro'] = kde.pdf(samples['data'].tolist())
print(samples)

但我不能忍受的是,如果我的专栏太长,它会使操作变慢。有没有更好的方法在熊猫身上实现它?提前感谢。

它自己的发行版并不意味着
kde
。您可以将
value\u计数
normalize=True

df.assign(pro=df.data.map(df.data.value_counts(normalize=True)))

    data       pro
0      1  0.272727
1      1  0.272727
2      2  0.272727
3      3  0.181818
4      2  0.272727
5      2  0.272727
6      7  0.090909
7      8  0.090909
8      3  0.181818
9      4  0.090909
10     1  0.272727

它自己的分布并不意味着kde。您可以将
value\u计数
normalize=True

df.assign(pro=df.data.map(df.data.value_counts(normalize=True)))

    data       pro
0      1  0.272727
1      1  0.272727
2      2  0.272727
3      3  0.181818
4      2  0.272727
5      2  0.272727
6      7  0.090909
7      8  0.090909
8      3  0.181818
9      4  0.090909
10     1  0.272727

首先,谢谢你的回答。其次,我想问一下,我是否可以从概率密度函数中得到概率。如果我的数字不属于上述值,我如何获得概率。例如,如何根据该列的分布得到值的概率为1.5?首先,感谢您的回答。其次,我想问一下,我是否可以从概率密度函数中得到概率。如果我的数字不属于上述值,我如何获得概率。例如,如何根据该列的分布得到值为1.5的概率?