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的概率?