Разделить фрейм данных на точечные диаграммы индивидуально - PullRequest
0 голосов
/ 17 апреля 2019

Простой фрейм данных показывает данные Команд в Отделах для различных игр.

Я хочу разделить этот фрейм данных по Команде и сделать точечные графики по их Счету и Марке.

enter image description here

Кажется, работает нормально при просмотре графиков на экране.Однако при сохранении их в виде файлов.Странная вещь произошла (Кролик имеет 6 точек, а не 3).

enter image description here

enter image description here

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'Department':['Buy','Buy', 'Trade', 'Trade', 'Trade', 'Buy'],
               'Team':['Lion','Lion','Rabbit','Rabbit','Rabbit','Lion'],
               'Game':['a352','a425','a845','a846','a235','a526'],
               'Score':[7,8,9,4,2,3],
               'Mark':[1,3,5,7,1,2]}, columns = ['Department','Team','Game','Score','Mark'])

for each in df.groupby('Team'):
    plt.scatter(each[1]['Score'], each[1]['Mark'])
    plt.savefig('C:\\' + str(each[0]) + '.png')

Какой правильный путь?Спасибо.(кстати, что лучше, чем "каждый 1 ['Оценка']"?)

1 Ответ

1 голос
/ 17 апреля 2019

Кролик наносит данные Кролика и Льва на одном графике.

Я подозреваю, что это потому, что plt использует ту же цифру в вашем цикле for.Попробуйте добавить plt.figure() на входе в цикл, а затем plt.close() на выходе (то есть в конце) вашего for цикла, чтобы создать и закрыть новый figure каждый раз.

Как это:

for each in df.groupby('Team'):
    plt.figure()
    plt.scatter(each[1]['Score'], each[1]['Mark'])
    plt.savefig('C:\\' + str(each[0]) + '.png')
    plt.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...