Pandas.DataFrame.cumsum() 累积和 详解 含代码 含测试数据集 随Pandas版本持续更新

本文详细介绍了PandasDataFrame.cumsum()方法,包括其计算公式、语法、参数(如axis和skipna)以及使用示例,展示了如何在Pandas中按行或列计算累积和,以及处理缺失值的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

Pandas.DataFrame.cumsum()

Pandas.DataFrame.cumsum 方法用于返回行或列每一个元素与前面所有元素的累积和

⚠️ 注意 :

  1. 字符串可以求累积和,相当于字符串拼接。 例2

    • 字符串不能和任何其他类型数据混用,比如 缺失值、数值,否则报错 TypeError

计算公式:

  • Pandas累积和计算公式:

    S i = x 1 + x 2 + … + x i S_i = x_1 + x_2 + \ldots + x_i Si=x1+x2++xi

    S i S_i Si 表示当前位置的累积和, x 1 + … + x i x_1+ \ldots + x_i x1++xi 表示从起始位置加到当前位置。

语法:

DataFrame.cumsum(axis=None, skipna=True, *args, **kwargs)

返回值:

  • Series or DataFrame

参数说明:

axis 指定计算方向(行或列)

  • axis : {0 or ‘index’, 1 or ‘columns’}, default 0

    axis 参数,用于指定计算方向,即按行计算或按列计算累积和:

    • 如果是 Series 此参数无效,将始终保持 axis=0,即计算整列的累积和。例1
    • 如果是 DataFrame 默认为 axis=0 即计算每一列的累积和。并有以下参值可选:
      • 0 or ‘index’: 计算每列的累积和。 例3
      • 1 or ‘columns’: 计算每行的累积和。例4

skipna 忽略缺失值

  • skipna : bool, default True >

    skipna 参数,用于指定求累积和的时候是否忽略缺失值,默认 skipna=True 表示忽略缺失值:

    • True: 忽略缺失值。当遇到缺失值,会跳过缺失值,以缺失值上面的最近有效值继续后面的计算。 例5
    • False: 不忽略缺失。但是后面的所有结果将都是缺失值。例6

*args,**kwargs

  • 为了保持与 Numpy 的兼容性而保留的参数,一般不需要传递任何内容。

相关方法:

➡️ 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png

测试文件下载位置

例1:如果是 Series 始终保持 axis=0,即计算 Series 所有元素的累积和。

import numpy as np
import pandas as pd

s = pd.Series([24.0, np.nan, 21.0, 33, 26], name="age")
s.cumsum()
0     24.0
1      NaN
2     45.0
3     78.0
4    104.0
Name: age, dtype: float64

例2:字符串求累和,相当于是字符串拼接

import numpy as np
import pandas as pd

df = pd.DataFrame({"第一列": ["一", "二", "三"], "第二列": ["四", "五", "六"]})

df.cumsum()
第一列第二列
0
1一二四五
2一二三四五六

例3、计算每列累积和

import numpy as np
import pandas as pd

df = pd.DataFrame([[2.0, 1.0],
                   [3.0, np.nan],
                   [1.0, 0.0]],
                  columns=list('AB'))

df.cumsum()
AB
02.01.0
15.0NaN
26.01.0

例4、计算每行累积和

import numpy as np
import pandas as pd

df = pd.DataFrame(
    [[2.0, 1.0, 3.0], [3.0, np.nan, 5.0], [1.0, 1.0, 1.0], [1.0, 0.0, 2.0]],
    columns=list("ABC"),
)

df.cumsum(axis=1)
ABC
02.03.06.0
13.0NaN8.0
21.02.03.0
31.01.03.0

例5、默认会跳过缺失值,以缺失值上面的最近有效值,进行后面的计算

import numpy as np
import pandas as pd

df = pd.DataFrame([[2.0, 1.0],
                   [3.0, np.nan],
                   [1.0, 1.0],
                  [1.0, 0.0]],
                  columns=list('AB'))

df.cumsum()
AB
02.01.0
15.0NaN
26.02.0
37.02.0

例6、如果不忽略缺失值,后面所有的结果,将都是缺失值。

import numpy as np
import pandas as pd

df = pd.DataFrame([[2.0, 1.0],
                   [3.0, np.nan],
                   [1.0, 1.0],
                  [1.0, 0.0]],
                  columns=list('AB'))

df.cumsum(skipna=False)
AB
02.01.0
15.0NaN
26.0NaN
37.0NaN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数象限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值