Построение нескольких разбросов за несколько лет в Python - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть датафрейм, похожий на:

Date            Faculty         Target        Avg
2012-01-01       Arts             80           60
2012-01-01       Science          70           60
2012-02-01       Arts             91           89
2012-02-01       Gym              80           89
.
.
2012-07-01       Arts             83           67
2012-07-01       Science          72           67
2012-08-01       Arts             81           83
2012-08-01       Science          70           83

Я хочу построить все Факультет на одном точечном графике с каждым из соответствующих им Целевых значений (ось Y) и Средних значений (X- Ось).

Я пытаюсь использовать (псевдокод) диаграмму рассеяния, например:

ax1 = data.plot(kind='scatter', x='Avg', y='Target(Arts)', color='r', label='Arts')    
ax2 = data.plot(kind='scatter', x='Avg', y='Target(Science)', color='g', ax=ax1, label='Science') 
ax3 = data.plot(kind='scatter', x='Avg', y='Target(Gym)', color='b', ax=ax1, label='Gym')

Я бы хотел, чтобы все факультеты (их было всего 28) на одном графике для каждого целевого значения (отмечены разными цветами), но их слишком много, чтобы вводить вручную с помощью loc (или, по крайней мере, я бы хотел бы избежать этого). Я не могу использовать iloc для подсчета по индексу, потому что каждое число факультетов отличается на каждую дату.

Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете groupby Faculty и выполнять итерации по группам, составляя каждую из них:

g = df.groupby('Faculty')

for faculty, data in g:
    plt.scatter(data['Avg'], data['Target'], label=faculty)

plt.xlabel('Avg')
plt.ylabel('Target')
plt.legend()
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...