Seaborn:来自两个Dataframes的Grouped Boxplot

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Seaborn:来自两个Dataframes的Grouped Boxplot相关的知识,希望对你有一定的参考价值。

我想绘制带有seaborn的分组箱图,但数据存在于两个不同的DataFrame对象中。

数据框具有相同的行和列,具有不同的值并具有形状:(10.000 x 24)。柱子是癌症类型,在这种情况下行是基因。

当我只绘制其中一个数据帧时,一切看起来都不错。继docs之后,我加入了两个数据框,如:

df1 = pd.read_csv('a.csv')
df2 = pd.read_csv('b.csv')
# categorical variable similar to 'smoker' attribute in tips dataset
df1['kind'] = 'catA'
df2['kind'] = 'catB'
both = pd.concat((df1, df2))

当我现在绘制数据时,一切看起来都很好:

seaborn.boxplot(data=both)

给了我一个漂亮的boxplotenter image description here

但是,我无法正确设置huexy属性以获得与分组boxplot相同的绘图。我知道它应该类似于:

seaborn.boxplot(x=?, y=?, hue='kind', data=both)

但我无法弄清楚如何设置xy以获得相同的行为,就好像它们被设置为None一样。

感谢您的任何帮助或建议。

最好,罗马

答案

似乎您的数据框架采用“宽”格式。你需要将它转换为'long'格式(pandas.meltpandas.wide_to_long等函数应该有帮助)。你必须组织你的数据,这样它就会成为一个N x 3数据帧,其列为1.你的基因表达量,2。癌症类型,以及3.你的新分类变量(类似于'吸烟' )。如果您希望拥有另一个变量(例如基因名称),则可以包含3列以上的列。但这三个需要存在才能使情节发挥作用。

(我可能误解了您的数据内容,但这是我对您测量的内容和变量的理解。)

然后你的命令看起来像:

seaborn.boxplot(x='measurement', y='cancer_type', hue='kind', data=both)

以上是关于Seaborn:来自两个Dataframes的Grouped Boxplot的主要内容,如果未能解决你的问题,请参考以下文章

来自seaborn facetgrid中不同数据帧的两行

来自 Spark / Dataframes 的 AWS SSE-KMS 加密

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

在使用 `groupby` 之后使用 Seaborn 的 `factorplot`

python 连接Pandas DataFrames(来自http://pandas.pydata.org/pandas-docs/stable/merging.html)

来自枢轴的seaborn热图中的数据顺序