Pandas groupby, накопленная сумма и сюжет по категориям - PullRequest
0 голосов
/ 07 ноября 2019

Имея фрейм данных pandas:

    date        path    size
0   2019-05-10  /bar/A  3
1   2019-05-10  /bar/B  7
2   2019-05-10  /bar/C  2
3   2019-05-14  /bar/A  4
4   2019-05-14  /bar/B  8
5   2019-05-14  /bar/C  23
6   2019-05-18  /bar/A  11
7   2019-05-18  /bar/B  75
8   2019-05-18  /bar/C  32

Я бы хотел groupby "путь" и вернуть совокупную сумму столбца "размер" для каждой "даты"

Глядя на этот ответ: Pandas groupby кумулятивная сумма

простой df.groupby(["path"])["size"].cumsum() или df.groupby(["path","date"])["size"].cumsum() не сработает.

В итоге кумулятивная сумма должна бытьпостроены по дате и раскрашены по группам, чтобы показать накопленный рост «размера» с течением времени.

            /bar/A /bar/B /bar/C
2019-05-10  3      7      2
2019-05-14  7      15     26
2019-05-18  18     90     58

Существует ли какое-либо решение на основе pandas без seaborn или других инструментов?

1 Ответ

1 голос
/ 07 ноября 2019

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

pivot = pd.pivot_table(df, values="size", index=["date"], columns=["path"], aggfunc=np.sum)
pivot = pivot.cumsum()

Смотрите результаты, основываясь на примере вашего вопроса:

df
Out[14]: 
         date    path  size
0  2019-05-10  /bar/A     3
1  2019-05-10  /bar/B     7
2  2019-05-10  /bar/C     2
3  2019-05-14  /bar/A     4
4  2019-05-14  /bar/B     8
5  2019-05-14  /bar/C    23
6  2019-05-18  /bar/A    11
7  2019-05-18  /bar/B    75
8  2019-05-18  /bar/C    32
pivot = pd.pivot_table(df, values="size", index=["date"], columns=["path"], aggfunc=np.sum)
pivot.cumsum()
Out[16]: 
path        /bar/A  /bar/B  /bar/C
date                              
2019-05-10       3       7       2
2019-05-14       7      15      25
2019-05-18      18      90      57
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...