具有加权数据的分布型图(直方图/ kde)

Joh*_*hnE 6 python matplotlib pandas bokeh seaborn

简而言之,当我的数据加权时,对于分布式图形(直方图或kde),我的最佳选择是什么?

df = pd.DataFrame({ 'x':[1,2,3,4], 'wt':[7,5,3,1] })

df.x.plot(kind='hist',weights=df.wt.values)
Run Code Online (Sandbox Code Playgroud)

这很好,但是seaborn不接受权重kwarg,即

sns.distplot( df.x, bins=4,              # doesn't work like this
              weights=df.wt.values )     # or with kde=False added
Run Code Online (Sandbox Code Playgroud)

如果kde能接受重量也不错,但是大熊猫和海鸟似乎都不允许它.

我知道btw数据可以扩展以伪造加权,这在这里很容易,但对我的数据或数千的权重的真实数据没有多大用处,所以我不是在寻找像这样的解决方法.

无论如何,就是这样.我只是试图找出除了基本的熊猫直方图之外我可以用加权数据做什么(如果有的话).我还没有骗过散景,但欢迎散景建议.

hit*_*tzg 5

您必须了解seaborn使用pandas使用的非常matplotlib绘图功能.

正如文档所述,sns.distplot不接受weights参数,但它确实需要一个hist_kws参数,它将被发送到底层调用plt.hist.因此,这应该做你想要的:

sns.distplot(df.x, bins=4, hist_kws={'weights':df.wt.values}) 
Run Code Online (Sandbox Code Playgroud)