gpt4 book ai didi

python - 重新采样 Pandas 中不规则间隔的数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:59 24 4
gpt4 key购买 nike

是否可以对不规则间隔的数据使用 resample? (我知道文档说它用于“对常规时间序列数据进行重采样”,但我想尝试一下它是否也适用于不规则数据。也许它不起作用,或者我做错了什么。)

在我的真实数据中,我一般每小时有 2 个样本,它们之间的时间差通常在 20 到 40 分钟之间。因此,我希望将它们重新采样为定期的每小时系列。

为了测试我是否正确使用它,我使用了一些我已经拥有的随机日期列表,因此它可能不是最好的例子,但至少适用于它的解决方案将非常强大。这是:

    fraction  number                time
0 0.729797 0 2014-10-23 15:44:00
1 0.141084 1 2014-10-30 19:10:00
2 0.226900 2 2014-11-05 21:30:00
3 0.960937 3 2014-11-07 05:50:00
4 0.452835 4 2014-11-12 12:20:00
5 0.578495 5 2014-11-13 13:57:00
6 0.352142 6 2014-11-15 05:00:00
7 0.104814 7 2014-11-18 07:50:00
8 0.345633 8 2014-11-19 13:37:00
9 0.498004 9 2014-11-19 22:47:00
10 0.131665 10 2014-11-24 15:28:00
11 0.654018 11 2014-11-26 10:00:00
12 0.886092 12 2014-12-04 06:37:00
13 0.839767 13 2014-12-09 00:50:00
14 0.257997 14 2014-12-09 02:00:00
15 0.526350 15 2014-12-09 02:33:00

现在我想对这些重新采样,例如每月一次:

df_new = df.set_index(pd.DatetimeIndex(df['time']))
df_new['fraction'] = df.fraction.resample('M',how='mean')
df_new['number'] = df.number.resample('M',how='mean')

但我得到 TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex' - 除非我在分配日期时间索引时做错了什么,这一定是由于违规?

所以我的问题是:

  1. 我是否正确使用它?
  2. 如果 1==True,是否没有直接的方法对数据进行重采样?

(我只看到一个解决方案,首先重新索引数据以获得更精细的间隔,插入中间的值,然后将其重新索引为每小时间隔。如果是这样,那么关于重新索引的正确实现的问题将很快出现。 )

最佳答案

您不需要显式使用DatetimeIndex,只需将'time' 设置为索引,pandas 会处理剩下的,只要您的“时间” 列已使用 pd.to_datetime 转换为日期时间或其他一些方法。此外,如果您使用相同的方法,则无需单独对每一列重新采样;只需在整个 DataFrame 上执行即可。

# Convert to datetime, if necessary.
df['time'] = pd.to_datetime(df['time'])

# Set the index and resample (using month start freq for compact output).
df = df.set_index('time')
df = df.resample('MS').mean()

结果输出:

            fraction  number
time
2014-10-01 0.435441 0.5
2014-11-01 0.430544 6.5
2014-12-01 0.627552 13.5

关于python - 重新采样 Pandas 中不规则间隔的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112087/

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