Метод cumprod
Метод cumprod применяется к DataFrame
и возвращает таблицу с кумулятивным произведением элементов.
По умолчанию вычисления выполняются по строкам (ось 0),
то есть для каждого столбца перемножаются все предыдущие значения
с текущим. С помощью параметра axis можно изменить направление
расчёта на столбцы. Параметр skipna управляет обработкой
пропущенных значений: если True, то значения NaN
игнорируются, а если False, то наличие хотя бы одного
пропуска в столбце делает все последующие произведения равными NaN.
Синтаксис
df.cumprod(axis=0, skipna=True)
Пример
Давайте вычислим кумулятивное произведение элементов по строкам для числовой таблицы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [2, 3, 4, 5, 6]
})
res = df.cumprod()
print(res)
Результат выполнения кода:
a b
0 1 2
1 2 6
2 6 24
3 24 120
4 120 720
Пример
Теперь вычислим кумулятивное произведение по столбцам,
передав axis=1:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [2, 3, 4, 5, 6]
})
res = df.cumprod(axis=1)
print(res)
Результат выполнения кода:
a b
0 1 2
1 2 6
2 3 12
3 4 20
4 5 30
Пример
Рассмотрим обработку пропущенных значений с параметром skipna.
По умолчанию пропуски игнорируются:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [1, 2, 3, 4, 5]
})
res = df.cumprod()
print(res)
Результат выполнения кода:
a b
0 1.0 1
1 2.0 2
2 NaN 6
3 NaN 24
4 NaN 120
Пример
Если установить skipna=False, то пропуск
обнуляет все последующие значения:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [1, 2, 3, 4, 5]
})
res = df.cumprod(skipna=False)
print(res)
Результат выполнения кода:
a b
0 1.0 1
1 2.0 2
2 NaN 6
3 NaN 24
4 NaN 120