我有一个pandas数据框,想要计算这些值的密度分布函数。有这样的东西会很高兴:
df['col_name'].dens()
但是,如果不存在这样的东西,我可以将所有这些值放到一个列表中,然后使用一些其他函数来计算列表中值的密度分布函数。如果我可以在以下任何一个包中执行此操作会很棒:scipy
,numpy
,ipython
,scikit
。
答案 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')