Как вывести данные на две оси Y в pandas или matplotlib? - PullRequest
1 голос
/ 27 января 2020

У меня есть фрейм данных, который представляет собой комбинацию FER (распознавания эмоций на лице) и прогнозирования настроения

Теперь в наборе данных для прогнозирования настроения есть два столбца - Вопрос и Прогноз. Вопрос представляет три значения [1 - Активация; 2 - Удовольствие; 5- Напряжение] и столбец прогноза также имеет три значения [0 - Низкий; 1 - средний; 2 - Высокий]. Индекс состоит из меток времени.

Я хотел бы дать краткое объяснение скриншота 3 ниже. Давайте рассмотрим третью строку, в которой значение вопроса равно 5, а значение прогноза равно 1. Это указывает на стресс (5) среднего (1) уровня.

Как я могу построить прогноз значения вопроса во времени? Я пытался сделать это, но я получаю только одну строчку за все.

d = one.groupby('question')
dunk1 = d.get_group(1)
fig, ax1 = plt.subplots(figsize = (20,5))
x = one.index
y = one.prediction
ax1.plot(x,y,'r-')

График моего попытки кода

image

Я хочу получить вывод, который выглядит примерно так:

image

Снимок экрана набора данных

dataset

1 Ответ

1 голос
/ 29 января 2020

Вы выводите x и y из исходного кадра данных, а не из сгруппированного кадра данных, вы должны сделать

d = one.groupby('question')
dunk1 = d.get_group(1)
fig, ax1 = plt.subplots(figsize = (20,5))
x = dunk1.index
y = dunk1.prediction
ax1.plot(x,y,'r-')

Или построить все три группы вопросов

d = one.groupby('question')
fig, ax = plt.subplots(figsize = (20,5))
for k in d.groups.keys():
    group = d.get_group(k)
    ax.plot(group.index, group.prediction)

Но поймите, что это может не дать вам полного результата, которого вы хотите - может потребоваться дополнительная фильтрация или сортировка.

...