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

Python-Pandas:如何在指数增长的值之间进行插值?,python,pandas,time-series,interpolation,exponential,Python,Pandas,Time Series,Interpolation,Exponential,我有一个熊猫系列,它包含了一种产品的价格演变。我的国家通货膨胀率很高,或者说,某个国家的冠状病毒感染者的数量。这两个数据集中的值都呈指数增长;这意味着,如果你有[3,NaN,27]这样的东西,你会想要插值,这样在这种情况下,丢失的值会被9填充。我检查了Pandas文档中的插值方法,但是除非我遗漏了什么,否则我没有找到关于这种插值类型的任何信息 我可以手工计算,你只需要取几何平均值,或者如果有更多的值,通过计算终值/初始值^1/它们之间的距离,得到平均增长率,然后相应地乘以。但是在我的系列中有很多

我有一个熊猫系列,它包含了一种产品的价格演变。我的国家通货膨胀率很高,或者说,某个国家的冠状病毒感染者的数量。这两个数据集中的值都呈指数增长;这意味着,如果你有[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