Python pandas 计算每行的增长率与累计增长率

下面是Python pandas计算每行的增长率与累计增长率的攻略。

1. 准备数据

首先我们需要准备好要计算的数据,假设有以下数据:

import pandas as pd

df = pd.DataFrame({
    '时间': ['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01', '2020-05-01'],
    '销售额': [1000, 1200, 1500, 2000, 2500]
})

print(df)

输出结果如下:

           时间   销售额
0  2020-01-01  1000
1  2020-02-01  1200
2  2020-03-01  1500
3  2020-04-01  2000
4  2020-05-01  2500

2. 计算每行的增长率

计算每行的增长率可以通过pandas的pct_change()函数实现。该函数可以计算序列中相邻元素之间的变化率。

df['增长率'] = df['销售额'].pct_change()

print(df)

输出结果如下:

           时间   销售额       增长率
0  2020-01-01  1000       NaN
1  2020-02-01  1200  0.200000
2  2020-03-01  1500  0.250000
3  2020-04-01  2000  0.333333
4  2020-05-01  2500  0.250000

注意:第一行的增长率为NaN,因为没有前一行数据作为参考,无法计算增长率。

3. 计算累计增长率

计算累计增长率可以通过pandas的cumprod()函数实现。该函数可以计算序列的累计乘积。

df['累计增长率'] = (1 + df['增长率']).cumprod() - 1

print(df)

输出结果如下:

           时间   销售额       增长率    累计增长率
0  2020-01-01  1000       NaN       NaN
1  2020-02-01  1200  0.200000  0.200000
2  2020-03-01  1500  0.250000  0.470588
3  2020-04-01  2000  0.333333  1.000000
4  2020-05-01  2500  0.250000  1.750000

注意:第一行的累计增长率为NaN,因为没有前一行数据作为参考,无法计算累计增长率。累计增长率通过累计乘积计算得到,需要注意的是,得到的值需要减去1才是真正的累计增长率。

4. 示例说明

我们再通过一个实例来说明计算每行的增长率与累计增长率的方法,假设有以下数据:

import pandas as pd

df = pd.DataFrame({
    '时间': ['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01', '2020-05-01'],
    '销售额': [1000, 1200, 900, 1500, 1800]
})

print(df)

输出结果如下:

           时间   销售额
0  2020-01-01  1000
1  2020-02-01  1200
2  2020-03-01   900
3  2020-04-01  1500
4  2020-05-01  1800

计算每行的增长率:

df['增长率'] = df['销售额'].pct_change()

print(df)

输出结果如下:

           时间   销售额       增长率
0  2020-01-01  1000       NaN
1  2020-02-01  1200  0.200000
2  2020-03-01   900 -0.250000
3  2020-04-01  1500  0.666667
4  2020-05-01  1800  0.200000

计算累计增长率:

df['累计增长率'] = (1 + df['增长率']).cumprod() - 1

print(df)

输出结果如下:

           时间   销售额       增长率    累计增长率
0  2020-01-01  1000       NaN       NaN
1  2020-02-01  1200  0.200000  0.200000
2  2020-03-01   900 -0.250000 -0.142857
3  2020-04-01  1500  0.666667  0.714286
4  2020-05-01  1800  0.200000  1.000000

通过计算可以看出,在第三行销售额下降了25%,对应的增长率为-0.25,而在第四行销售额上升了66.67%,对应的增长率为0.6667。通过累计增长率可以看出,前三行的销售额总体下降了14.29%。第四行销售额上升,导致累计增长率上升到0.714。而到了第五行,销售额上升了20%,对应的累计增长率上升到1,表示销售额在这个时间段内总体增长了100%。

希望这份攻略对你有所帮助。

本文链接:http://task.lmcjl.com/news/17571.html

展开阅读全文