python - Pandas groupby、累积总和和按类别绘图

标签 python pandas dataframe group-by

有一个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/

相关文章:

r - 如何在不构建新数据框的情况下使用 R 中的 ggplot2 绘制来自不同数据框的两个系列?

python - 单击新模块安装时 OpenERP 服务器错误

python - 使用 hadoop 流和 mrjob 运行作业 : PipeMapRed. waitOutputThreads(): subprocess failed with code 1

python - Pandas applymap 函数在应用于太多列时会删除行吗?

python - pandas read_csv 中的转义引号

python - 在 pandas df 中查找 timedelta 对象的均值和标准差

python - 在参数化函数中仅使用一次 fixture

python - 游戏设计的协程?

python - Pandas如何添加计数器以在两个数据帧列之间匹配行

python - Pandas 使用 Series 过滤 DataFrame