В Python (как было предложено @ sahasrara62 в комментариях)
ages = [20.3, 30.5, 20.3, 45.5, 50.6, 29.5, 13.4, 140.9]
changes = []
for x1, x2 in zip(ages[:-1], ages[1:]):
try:
pct = (x2 - x1) * 100 / x1
except ZeroDivisionError:
pct = None
changes.append(pct)
# [50.2463054187192,
# -33.44262295081967,
# 124.13793103448275,
# 11.208791208791212,
# -41.699604743083,
# -54.576271186440685,
# 951.4925373134328]
Использование numpy
import numpy as np
ages = np.array([20.3, 30.5, 20.3, 45.5, 50.6, 29.5,
13.4, 140.9])
diff = ages[1:] - ages[:-1]
changes = diff / ages[1:] * 100
# [ 50.24630542 -33.44262295 124.13793103 11.20879121
# -41.69960474 -54.57627119 951.49253731]
Использование Pandas
import pandas as pd
ages = pd.Series([20.3, 30.5, 20.3, 45.5, 50.6, 29.5,
13.4, 140.9])
changes = ages.pct_change() * 100
# 0 NaN
# 1 50.246305
# 2 -33.442623
# 3 124.137931
# 4 11.208791
# 5 -41.699605
# 6 -54.576271
# 7 951.492537
# dtype: float64