有一个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 cumulative sum
一个简单的 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
或其他工具的解决方案?
最佳答案
我认为您可以实现旋转表格然后应用累积总和。
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
关于python - Pandas groupby、累积总和和按类别绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752921/