gis*_*ang 1 distribution probability python-3.x pandas
我想根据其自己的分布来计算列数据框中所有数据的概率。例如,我的数据如下:
data
0 1
1 1
2 2
3 3
4 2
5 2
6 7
7 8
8 3
9 4
10 1
Run Code Online (Sandbox Code Playgroud)
我期望这样的输出?
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
Run Code Online (Sandbox Code Playgroud)
我还参考另一个问题(如何计算概率...)并获得上述示例。我的代码如下?
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)
Run Code Online (Sandbox Code Playgroud)
但是我无法忍受的是,如果我的专栏过长,则会使操作变慢。是否有更好的方法可以在大熊猫中进行呢?
它本身的分布并不意味着kde。你可以用value_counts与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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |