Python timeseries将标准化/缩放为基数100

2024-05-29 07:53:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个{}:

df = pd.DataFrame({'A': {'2020-01': 50, '2020-02': 70, '2020-03': 30},
 'B': {'2020-01': 10, '2020-02': 14, '2020-03': 9},
 'C': {'2020-01': 200, '2020-02': 100, '2020-03': 300}})

df

enter image description here

我正在寻找这个输出:

enter image description here

怎么做?好的,正如你所看到的,它是timeseries数据,当我想绘制变量ABC之间的演变和时间差异时,我需要将它们缩放到以100为基数。因此,每个变量将以100开始,下一个值显示基于第一个值(100)的最后一个值的增加/减少

例如,A从50(100)开始,然后更改为70(+40%,基于第一个月=140),然后更改为30(-80%,基于第一个月=60),依此类推。我认为应该有一些包或函数来实现这一点(因为它非常用于股市可视化),但我找不到任何包或函数。有什么建议吗

PS:您可以假设数据只有3个变量,但有数千行


Tags: 数据函数dataframedf可视化时间绘制差异
2条回答

只需编写一个简单的函数,它接受一个系列/列表并进行转换

def trans_100(a):
    a_trans = a[:]
    a_trans[0] = 100
    for i in range(1,len(a)):
        a_trans[i] = 100 + ((a[i] - a[0])*100/a[0])

    return a_trans

print(trans_100([50, 70, 30]))  

[100, 140.0, 60.0]

IIUC:

df = 100*(df / df.iloc[0, :])

df

            A      B      C
2020-01  100.0  100.0  100.0
2020-02  140.0  140.0   50.0
2020-03   60.0   90.0  150.0

相关问题 更多 >

    热门问题