如何计算python中一组值的密度分布?

时间:2013-07-05 16:01:46

标签: python numpy scipy pandas ipython

我有一个pandas数据框,想要计算这些值的密度分布函数。有这样的东西会很高兴:

df['col_name'].dens()

但是,如果不存在这样的东西,我可以将所有这些值放到一个列表中,然后使用一些其他函数来计算列表中值的密度分布函数。如果我可以在以下任何一个包中执行此操作会很棒:scipynumpyipythonscikit

2 个答案:

答案 0 :(得分:2)

您可以使用scipy.stats.gaussian_kde并将其传递给dataframe列:

df = pd.DataFrame(data={'a':np.random.randn(100)}) # 100 normally distributed values
g = sp.stats.gaussian_kde(df.a)
[g(x)[0] for x in np.linspace(-3,3,10)]

给出:

[0.010404194709511637,
 0.028412197910606129,
 0.093548960033717946,
 0.1915548075057672,
 0.29626128014747688,
 0.3402226687259407,
 0.29679380013692241,
 0.15516355334523385,
 0.057147975947743457,
 0.020153062250794138]

答案 1 :(得分:1)

如果你想要的只是密度图:df['col_name'].plot(kind='density')