Python、Pandas:如何更改 DataFrame.plt.density() 的带宽选择?

Python, Pandas: How to change the bandwidth selection for DataFrame.plt.density()?

我有一些数据已放入 pandas dataframe,并且我绘制了特定 column 的唯一值计数的条形图。

我想控制 Pandas 内置 df.plot.density()

的带宽

函数,绘制数据上的 kde。这可能吗,还是我最好使用 Sklearn、Scipy 或其他东西?

谢谢

如果你想控制带宽,我建议使用 seaborn 的 kdeplot(参见 link)——即 bw 参数

正如@Jan 所指出的,您可以为此使用 seaborn,在 kde 图上控制带宽非常容易。这是一个随机正常数据的示例:

import seaborn as sns

d = pd.DataFrame({'x':np.random.choice(['a','b','c'], 100), 'y':np.random.randn(100)})

fig, axes = plt.subplots(1,3)
for name,g in d.groupby('x'):
    g['y'].plot.density(ax=axes[0], label=name)
    sns.kdeplot(g['y'], bw=0.25, ax=axes[1], label=name)
    sns.kdeplot(g['y'], bw=0.75, ax=axes[2], label=name)

axes[0].set_title('pandas plot.density', fontsize='12')
axes[1].set_title('seaborn kde with \n 0.25 bandwidth', fontsize='12')
axes[2].set_title('seaborn kde with \n 0.75 bandwidth', fontsize='12')

plt.legend()

这returns下面的情节进行比较: