如何为来自同一个熊猫数据框的所有不同列制作单独的 Seaborn kde 图?

Posted

技术标签:

【中文标题】如何为来自同一个熊猫数据框的所有不同列制作单独的 Seaborn kde 图?【英文标题】:How to make seperate Seaborn kdeplots for all different columns from the same pandas Dataframe? 【发布时间】:2016-01-11 20:10:28 【问题描述】:

如何为 pandas 数据框的所有列制作两个单独的 Seaborn kdeplot:

具有六列(例如下面)的 pandas 数据框 (df):

df.columns = ["A", "B", "C", "D", "E", "F"]

我尝试了以下代码,但没有成功。下面的代码有什么提示吗?

df = sns.load_dataset("df")
g = sns.FacetGrid(df)
g.map(s.skdeplot, "df.columns");

【问题讨论】:

将代码添加到您的示例中,从头开始生成数据框(例如,不读取任何文件) KDE 是(几乎)连续计算,“低于 0.5 的点数”是什么意思。您希望低于和高于阈值的 KDE 部分是不同的颜色吗? @PaulH。稍微改了一下问题。请看上面。希望你能帮忙。 df = sns.load_dataset("df") 抛出错误。你能让你的例子从头开始重现吗? ***.com/questions/20109391/… 【参考方案1】:

你的问题在这里:

ax(i) = sns.kdeplot(dftouse[column], c = colorUp(dftouse[column]))

ax(i) 是一个函数调用。你正试图给它分配一些东西。这是不正确的。

我不熟悉 matplotlib,只熟悉 Python。也许你的意思是ax[i]?如果 ax 是一个数组或一个字典,那么这可能是正确的。

【讨论】:

稍微改变了问题。请看上面。希望你能帮忙。 您在引号中加上df.columns 似乎很奇怪,但我还是不熟悉那个包..(另外,您完全改变了问题。如果我的评论有帮助,它可能有礼貌地给我一个赞成票或表扬我的回答,然后在不同的线程中提出不同的问题。毕竟我正在努力建立一些声誉。)【参考方案2】:

我认为你需要使用pd.melt:

df = pd.DataFrame('id1' :np.random.randint(3,size=1000),
               'id2' :['ABC'[i] for i in np.random.randint(3,size=1000)],
               'val1':np.random.normal(loc=1, size=1000),
               'val2':np.random.normal(loc=2, size=1000),
               'val3':np.random.normal(loc=3, size=1000))

g = sns.FacetGrid(pd.melt(df,
                      id_vars=['id1','id2'],
                      value_vars=['val1','val2','val3']),
              hue='id1',col='id2',row='variable')
g.map(sns.kdeplot,'value')

【讨论】:

以上是关于如何为来自同一个熊猫数据框的所有不同列制作单独的 Seaborn kde 图?的主要内容,如果未能解决你的问题,请参考以下文章

来自另一个数据框的熊猫多索引分配

如何为熊猫中的多个变量按列创建所有组合?

多个熊猫数据框的交集

如何绘制熊猫数据框的多列

如何将一个熊猫数据框的一列与另一个数据框的每一列相加?

如何为Dataframe一列分配不同的数字[重复]