[英]Pandas groupby, cumulative sum and plot by category
有一個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
是否有沒有seaborn
或其他工具的基於pandas
的解決方案?
我認為您可以實現旋轉表格然后應用累積總和。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.