我有一个Pandas系列,其中包含产品的价格演变(我国通胀率很高),或者说某个国家/地区感染冠状病毒的人数。这两个数据集中的值都呈指数增长;这意味着如果您有类似[3,NaN,27]的信息,则需要进行插值,以便在这种情况下用9填充缺失值。我检查了Pandas文档中的插值方法,但是除非我错过了什么,否则我什么都没有找到。
我可以手动完成,您只需取几何平均值,或者在有更多值的情况下,通过做(最终值/初始值)^(1 /它们之间的距离)来获得平均增长率,然后相应地相乘。但是我的系列中有很多值可以填写,那么我该如何自动执行呢?我想我缺少了一些东西,因为这似乎是非常基本的东西。
谢谢。
您可以采用序列的对数,线性插入,然后将其转换回指数刻度。
import pandas as pd
import numpy as np
arr = np.exp(np.arange(1,10))
arr = pd.Series(arr)
arr[3] = None
0 2.718282
1 7.389056
2 20.085537
3 NaN
4 148.413159
5 403.428793
6 1096.633158
7 2980.957987
8 8103.083928
dtype: float64
arr = np.log(arr) # Transform according to assumed process.
arr = arr.interpolate('linear') # Interpolate.
np.exp(arr) # Invert previous transformation.
0 2.718282
1 7.389056
2 20.085537
3 54.598150
4 148.413159
5 403.428793
6 1096.633158
7 2980.957987
8 8103.083928
dtype: float64