我有一个熊猫数据框,想计算这些值的密度分布函数。有这样的东西会很好:
df['col_name'].dens()
但是,如果不存在类似的东西,我可以将所有这些值放到一个列表中,然后使用其他一些函数来计算列表中值的密度分布函数。如果我可以在以下任何一个包中做到这一点,那就太好了:scipy
, numpy
, ipython
, scikit
.
您可以使用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]
如果你想要的只是一个密度图:df['col_name'].plot(kind='density')