gpt4 book ai didi

python - Pandas 时间序列重新采样 + 线性调整值

转载 作者:行者123 更新时间:2023-12-04 03:58:29 26 4
gpt4 key购买 nike

使用 python 和 pandas,我如何将时间序列重新采样到甚至 5 分钟的间隔(偏移=从整小时开始的零分钟),同时还线性调整值?
因此,我想把这个:

         value
00:01 2
00:05 10
00:11 22
00:14 28
进入这个:
         value
00:00 0
00:05 10
00:10 20
00:15 30
请注意“值”列是如何调整的。
  • 为简单起见,我选择的值恰好为 2 * 分钟数。
  • 然而,在现实生活中,值(value)观并不那么完美。有时在两个偶数 5 分钟间隔之间会存在多个值,有时在两个“真实”值之间会存在一个以上 5 分钟间隔,因此在重新采样时我需要,对于每个偶数 5 分钟间隔,找到“真实” "在那个甚至 5 分钟的间隔之前和之后的值,并从中计算出一个线性内插值。

  • 附注。
    互联网上到处都有很多关于这方面的信息,但我仍然无法找到可以完成我想做的事情的函数(sum、max、mean 等,或编写我自己的函数)。

    最佳答案

    我重新考虑了代码,因为注释中省略了该要求。通过将原始数据框与扩展到一分钟的数据框组合来创建新的数据框。我对新数据框进行线性插值,并以 5 分钟为增量提取结果。这是我对流程的理解。如果我错了,请给我另一个答案。

    import pandas as pd
    import numpy as np
    import io

    data = '''
    time value
    00:01 2
    00:05 10
    00:11 22
    00:14 28
    00:18 39
    '''
    df = pd.read_csv(io.StringIO(data), sep='\s+')
    df['time'] = pd.to_datetime(df['time'], format='%H:%M')
    time_rng = pd.date_range(df['time'][0], df['time'][4], freq='1min')
    df2 = pd.DataFrame({'time':time_rng})
    df2 = df2.merge(df, on='time', how='outer')
    df2 = df2.set_index('time').interpolate('time')
    df2.asfreq('5min')
    value
    time
    1900-01-01 00:01:00 2.0
    1900-01-01 00:06:00 12.0
    1900-01-01 00:11:00 22.0
    1900-01-01 00:16:00 33.5

    关于python - Pandas 时间序列重新采样 + 线性调整值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63479739/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com