Hue две панды серии - PullRequest
       8

Hue две панды серии

0 голосов
/ 05 ноября 2019

У меня есть две серии панд, для которых я хочу сравнить их визуально, нанося их друг на друга. Я уже попробовал следующее

>>> s1 = pd.Series([1,2,3,4,5])
>>> s2 = pd.Series([3,3,3,3,3])
>>> df = pd.concat([s1, s2], axis=1)
>>> sns.stripplot(data = df)

, которое дает следующую картину:

enter image description here

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

>>> df = pd.concat([pd.DataFrame({'data':s1, 'type':'s1'}), pd.DataFrame({'data':s2, 'type':'s2'})])

, чтобы я мог «перебрать» type;но даже тогда я понятия не имею, что поставить для ключевого слова x (при условии y = 'data'). Игнорируя ключевое слово x вот так

>>> sns.stripplot(y='data', data=df, hue='type')

не может ничего оттенять:
enter image description here

1 Ответ

1 голос
/ 05 ноября 2019

seaborn обычно лучше всего подходит для длинных данных, поэтому вам может потребоваться немного изменить структуру данных. Ключевое слово hue ожидает столбец, поэтому для его получения мы будем использовать .melt().

long_form = df.melt()
long_form['X'] = 1

sns.stripplot(data=long_form, x='X', y='value', hue='variable')

Даст вам график, примерно соответствующий вашим требованиям:

Rearranged strip plot


Когда мы делаем pd.melt, мы меняем фрейм с нескольких столбцов значений на один столбец значений с «переменным» столбцом, чтобы определить, какойиз наших оригинальных колонн они пришли. Мы добавляем в столбец 'X', потому что stripplot для правильной работы в этом случае нужны x и hue. Наш long_form фрейм данных выглядит следующим образом:

   variable  value  X
0         0      1  1
1         0      2  1
2         0      3  1
3         0      4  1
4         0      5  1
5         1      3  1
6         1      3  1
7         1      3  1
8         1      3  1
9         1      3  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...