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

如何在python中计算一组值的密度分布?,python,numpy,scipy,pandas,ipython,Python,Numpy,Scipy,Pandas,Ipython,我有一个熊猫数据框,想计算这些值的密度分布函数。有这样的东西会很好: df['col_name'].dens() 但是,如果不存在类似的情况,我可以将所有这些值放到一个列表中,然后使用一些其他函数来计算列表中值的密度分布函数。如果我能在这两个软件包中的任何一个中完成这项工作,那就太好了:scipy,ipython,scikit,如果您只需要一个密度图:df['colu name'].plot(kind='density')您可以使用scipy.stats.gaussian'kde并将数据框列传

我有一个熊猫数据框,想计算这些值的密度分布函数。有这样的东西会很好:

df['col_name'].dens()

但是,如果不存在类似的情况,我可以将所有这些值放到一个列表中,然后使用一些其他函数来计算列表中值的密度分布函数。如果我能在这两个软件包中的任何一个中完成这项工作,那就太好了:
scipy
ipython
scikit
,如果您只需要一个密度图:
df['colu name'].plot(kind='density')
您可以使用
scipy.stats.gaussian'kde
并将数据框列传递给它:

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]

如果我按照你的建议去做,我不会收到任何错误信息,也不会得到任何结果(没有数字)。给定的命令返回什么?如果您在IPython笔记本中启用内联打印,该命令将立即生成密度图。我猜情况并非如此,因此您可以尝试:
import matplotlib.pyplot as plt;df['col_name'].绘图(种类='density');plt.show()