Как сгруппировать два столбца и создать цикл для вспомогательных участков? - PullRequest
1 голос
/ 18 октября 2019

У меня есть большой фрейм данных (df) в этой структуре:

    year        person      purchase

    2016        Peter       0
    2016        Peter       223820
    2016        Peter       0
    2017        Peter       261740
    2017        Peter       339987
    2018        Peter       200000
    2016        Carol       256400
    2017        Carol       33083820
    2017        Carol       154711
    2018        Carol       3401000
    2016        Frank       824043
    2017        Frank       300000
    2018        Frank       214416259
    2018        Frank       4268825
    2018        Frank       463080
    2016        Rita        0

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

код:

df1 = df.groupby(['person','year']).sum().reset_index()

Как создать цикл для создания подзаговоров для каждого человека, содержащий информацию о том, сколько он / она тратит на покупку каждый год?

Итак, подзаговор для каждого человека, где x = год, а y = покупка.

Я пробовал много разных вещей, объясненных здесь, но ни одна из них не работает.

Спасибо!

1 Ответ

1 голос
/ 18 октября 2019

Вы можете сделать pivot_table или groupby().sum().unstack('person'), а затем plot:

(df.pivot_table(index='year', 
                columns='person', 
                values='purchase', 
                aggfunc='sum')
    .plot(subplots=True)
);

Или

(df.groupby(['person','year'])['purchase']
   .sum()
   .unstack('person')
   .plot(subplots=True)
);

Выход:

enter image description here

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