使用Seaborn为数据帧绘制直方图 [英] Plotting histogram using seaborn for a dataframe

查看:502
本文介绍了使用Seaborn为数据帧绘制直方图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个dataFrame,其中有多列和多行.许多行没有列值,因此在数据框中以NaN表示. 示例数据帧如下,

I have a dataFrame which has multiple columns and many rows..Many row has no value for column so in the data frame its represented as NaN. The example dataFrame is as follows,

df.head()
GEN Sample_1    Sample_2    Sample_3    Sample_4    Sample_5    Sample_6    Sample_7    Sample_8    Sample_9    Sample_10   Sample_11   Sample_12   Sample_13   Sample_14
A123    9.4697  3.19689 4.8946  8.54594 13.2568 4.93848 3.16809 NAN NAN NAN NAN NAN NAN NAN
A124    6.02592 4.0663  3.9218  2.66058 4.38232         NAN NAN NAN NAN NAN NAN NAN
A125    7.88999 2.51576 4.97483 5.8901  21.1346 5.06414 15.3094 2.68169 8.12449 NAN NAN NAN NAN NAN
A126    5.99825 10.2186 15.2986 7.53729 4.34196 8.75048 16.9358 5.52708 NAN NAN NAN NAN NAN NAN
A127    28.5014 4.86702 NAN NAN NAN NAN NAN NAN NAN NAN NAN NAN NAN NAN

我想使用python中的seaborn函数绘制此dataFrame的直方图,所以我尝试了以下几行,

I wanted to plot histogram for this dataFrame using seaborn function from python and so i was trying the following lines,

sns.set(color_codes=True)
sns.set(style="white", palette="muted")
sns.distplot(df)

但是它抛出以下错误,

    ValueError                                Traceback (most recent call last)
    <ipython-input-80-896d7fe85ef3> in <module>()
          1 sns.set(color_codes=True)
          2 sns.set(style="white", palette="muted")
    ----> 3 sns.distplot(df)

    /anaconda3/lib/python3.4/site-packages/seaborn/distributions.py in distplot(a, bins, hist, kde, rug, fit, hist_kws, kde_kws, rug_kws, fit_kws, color, vertical, norm_hist, axlabel, label, ax)
        210         hist_color = hist_kws.pop("color", color)
        211         ax.hist(a, bins, orientation=orientation,
    --> 212                 color=hist_color, **hist_kws)
        213         if hist_color != color:
        214             hist_kws["color"] = hist_color

   /anaconda3/lib/python3.4/site-packages/matplotlib/axes/_axes.py in hist(self, x, bins, range, normed, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)
       5627             color = mcolors.colorConverter.to_rgba_array(color)
       5628             if len(color) != nx:
    -> 5629                 raise ValueError("color kwarg must have one color per dataset")
       5630 
       5631         # We need to do to 'weights' what was done to 'x'

    ValueError: color kwarg must have one color per dataset

任何帮助/建议摆脱此错误将不胜感激.. !!!

Any helps/suggestions to get rid of this error would be greatly appreciated..!!!

推荐答案

我还认为

I had also thought the seaborn documentation mentioned that multiple columns could be plotted simultaneously, and highlighted by color by default.

但是重新阅读后,我什么也没看到.相反,我想我是从本教程推断出来的,其中在整个过程中,本教程将绘制一个具有多列的数据框.

But upon re-reading, I did not see anything. Instead, I think I inferred it from this tutorial, where part of the way through, the tutorial plots a data frame with multiple columns.

但是,解决方案"是微不足道的,并且希望它确实是您想要的:

However, the "solution" is trivial, and hopefully exactly what you're looking for:

sns.set(color_codes=True)
sns.set(style="white", palette="muted")
sns.distplot(df)

for col_id in df.columns:
    sns.distplot(df[col_id])

默认情况下,这会更改颜色,知道"已使用的颜色.

By default, this will alter the colors, "knowing" which one has already been used.

注意:由于不确定如何重新创建您的数据集,因此我使用了不同的数据集.

Note: I used a different data set, since I wasn't sure how to re-create yours.

这篇关于使用Seaborn为数据帧绘制直方图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆