python 使用pandas计算累积求和的方法

  • Post category:Python

使用pandas计算累积求和可以使用cumsum()方法,下面是具体步骤:

1.导入pandas库

import pandas as pd

2.创建DataFrame

假设我们有一组数据,包含日期和每天的收入,我们可以通过如下代码创建一个DataFrame:

data = {'date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'], 
        'income':[100, 200, 300, 400]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
# 把日期列转为pandas的日期格式,以便后面的累积求和计算

3.计算累积求和

使用cumsum()方法计算DataFrame中每个元素以前的所有元素的和,并生成一个新的DataFrame:

df['cumulative_sum'] = df['income'].cumsum()

代码解释:

  • df['income']选出DataFrame中的收入列,使用cumsum()方法计算每个元素以前的所有元素的和
  • df['cumulative_sum']新建一个列名为’cumulative_sum’的列,并把计算所得的累积求和结果赋值给这一列

4.示例说明

例如,我们可以通过以下代码检验上述计算是否正确:

print(df)

输出结果如下:

        date  income  cumulative_sum
0 2021-01-01     100             100
1 2021-01-02     200             300
2 2021-01-03     300             600
3 2021-01-04     400            1000

可以看到,’cumulative_sum’列中每个元素依次为累积求和的结果。

另外,我们也可以先使用groupby()方法按照某列进行分组,再对每个分组应用cumsum()方法。例如,可以按照月份分组计算每个月的累积收入,示例如下:

df['month'] = df['date'].dt.month
# 提取出日期中的月份
df['monthly_sum'] = df.groupby('month')['income'].cumsum()
# 按照月份分组,计算每个月的累积收入

这段代码将DataFrame按照月份分组,然后对每个分组应用cumsum()方法,计算出每个月的累积收入。我们可以通过以下代码检验上述计算是否正确:

print(df)

输出结果如下:

        date  income  cumulative_sum  month  monthly_sum
0 2021-01-01     100             100      1          100
1 2021-01-02     200             300      1          300
2 2021-01-03     300             600      1          600
3 2021-01-04     400            1000      1         1000

可以看到,’monthly_sum’列中每个元素依次为每个月的累积求和结果。