如何在Python中提取密度函数概率(pandas kde)

dev*_*ist 12 python kernel-density pandas

pandas.plot.kde()函数可以方便地绘制连续随机变量的估计密度函数。它将数据x作为输入,并显示分箱输入的概率p(x)作为其输出。

如何提取它计算的概率值?我想要一个包含内部计算的概率值的数组或 pandas 系列,而不是仅仅绘制带宽样本的概率。

如果这不能用 pandas kde 完成,请告诉我 scipy 或其他中的任何等效项

My *_*ork 16

有几种方法可以做到这一点。您可以自己计算或从图中获取。

  1. 正如@RichieV 在这篇文章之后的评论中指出的,您可以使用以下命令从图中提取数据
data.plot.kde().get_lines()[0].get_xydata()
Run Code Online (Sandbox Code Playgroud)
  1. 使用seaborn,然后与 1) 中相同:

您可以使用seaborn来估计内核密度,然后matplotlib提取值(如本文中所示)。您可以使用distplotkdeplot

import seaborn as sns

# kde plot
x,y = sns.kdeplot(data).get_lines()[0].get_data()
# distplot
x,y = sns.distplot(data, hist=False).get_lines()[0].get_data()

Run Code Online (Sandbox Code Playgroud)
  1. 您可以使用scipy.stats.gaussian_kde的底层方法来估计使用的内核密度pandas
import scipy.stats

density = scipy.stats.gaussian_kde(data)
Run Code Online (Sandbox Code Playgroud)

然后你可以用它来评估一组点:

x = np.linspace(0,80,200)
y = density(xs)
Run Code Online (Sandbox Code Playgroud)