Python - Pandas:如何在指数增长值之间插值?

vc9ivgsu  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(108)

我有一个Pandas系列,包含产品的价格演变(我的国家通货膨胀率很高),或者说,某个国家的冠状病毒感染人数。这两个数据集中的值都呈指数增长;这意味着如果你有类似[3,NaN,27]的东西,你会想要插值,这样在这种情况下缺失的值就用9来填充。我检查了Pandas文档中的插值方法,但除非我错过了什么,否则我没有找到任何关于这种类型插值的信息。
我可以手动完成,你只需要取几何平均值,或者在有更多值的情况下,通过做(最终值/初始值)^(1/它们之间的距离)得到平均增长率,然后相应地相乘。但是在我的Series中有很多值需要填写,那么我如何自动完成这项工作呢?我想我错过了一些东西,因为这似乎是非常基本的东西。

falq053o

falq053o1#

你可以对你的系列取对数,线性插值,然后将其转换回指数标度。

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

相关问题