Seaborn: сгруппированный блокпост из двух датафреймов - PullRequest
0 голосов
/ 26 июня 2018

Я хочу нанести сгруппированные сгруппированные коробочные графики, но данные присутствуют в двух разных DataFrame объектах.

Фреймы данных имеют одинаковые строки и столбцы с разными значениями и имеют форму: (10.000 x 24). Столбцы относятся к типу рака, а строки в данном случае являются генами.

Когда я рисую только один из фреймов данных, все выглядит хорошо. Следуя документам , я присоединился к двум фреймам данных:

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)

дает мне одну красивую коробку enter image description here

Однако я не могу правильно установить атрибуты hue, x и y, чтобы получить тот же график, что и сгруппированный блок-график. Я знаю, что это должно быть что-то похожее на:

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

но я не могу понять, как установить x и y, чтобы получить то же поведение, как если бы они были установлены на None.

Спасибо за любую помощь или предложения.

Лучший, Roman

1 Ответ

0 голосов
/ 26 июня 2018

Кажется, что ваш фрейм данных имеет «широкий» формат. Вам нужно будет преобразовать его в «длинный» формат (такие функции, как pandas.melt или pandas.wide_to_long должны помочь). Вам нужно будет упорядочить свои данные так, чтобы они в конечном итоге представляли собой фрейм данных N x 3 со столбцами: 1. ваше измерение экспрессии гена, 2. типы рака и 3. ваша новая категориальная переменная (аналогично «курильщику»). ). Вы можете иметь более 3 столбцов, если есть другая переменная, которую вы хотите иметь (например, имя гена). Но эти три должны присутствовать, чтобы сюжет работал.

(Возможно, я неверно истолковал содержание ваших данных, но это мое понимание того, что вы измеряете и каковы переменные.)

Тогда ваша команда будет выглядеть примерно так:

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