(Python) Использование groupby для итерации и построения различных графиков - PullRequest
1 голос
/ 19 апреля 2020

Прежде всего, извините, если название не очень репрезентативно, но я действительно не знаю, как его выразить ...

У меня есть кадр данных со следующими именами столбцов:

Subject | Project | Date | Amount | Lenght | Value

И для которого я хочу построить несколько линейных графиков в зависимости от определенных условий.

Я знаю, что мог бы использовать df.lo c, чтобы установить sh условия, которые я хочу, но комбинации Мне нужно создать слишком много, чтобы жестко закодировать (или, по крайней мере, я надеюсь, что в любом случае я найду способ этого не делать).

Я хочу построить линейный график для каждой возможной комбинации Project / Сумма / Длина, в которой ось x - это дата, ось y - это значение, и у каждого субъекта есть разные строки.

В общей сложности 7 предметов, 3 типа проектов, 4 разных суммы, и 6 различных длин.

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

grp = df.groupby(['Project', 'Amount', 'Length'])

for project in grp:
    # .plt()

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

(('Project A', 5000, 24),      Subject Project        Date  Amount  Length    Value
0      S1     Project A  12/04/2020    5000        24  11.46
74     S2     Project A  12/04/2020    5000        24  16.39
167    S3     Project A  12/04/2020    5000        24   8.82
263    S4     Project A  13/04/2020    5000        24  11.46)

Примечание: номер индекса для меня не важен.

Есть идеи, как go узнать об этом?

Заранее спасибо!

1 Ответ

2 голосов
/ 19 апреля 2020

Вы можете распаковать кортежи по:

for g, df in df.groupby(['Project', 'Amount', 'Length']):
    print (df)

В вашем решении возможно выбрать второе значение кортежа по позиции:

for project in df.groupby(['Project', 'Amount', 'Length']):
    print (project[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...