繁体   English   中英

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

[英]Python - Pandas: how can I interpolate between values that grow exponentially?

我有一个 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM