【问题标题】:Time Series Resampling with wrong out and without Frequency带错误输出且无频率的时间序列重采样
【发布时间】:2021-09-19 19:52:39
【问题描述】:

目前我正在做一个时间序列项目。 我有超过 5 年时间跨度的每日数据点。在这之间,有些天的值是 0,有些天不见了。 例如:

2015-01-10  343
2015-03-10  128

10 月的第 2 天不见了。 为了建立一个好的时间序列模型,我想将数据重新采样为每月:

df.individuals.resample("M").sum()

但我得到以下输出:

2015-01-31    343.000000
2015-02-28           NaN
2015-03-31     64.500000

不知何故,月份完全错误。

预期的输出如下所示:

2015-31-10  Sum of all days
2015-30-11  Sum of all days
2015-31-12  Sum of all days

【问题讨论】:

  • 这没有错。没有 2015 年 2 月的数据,所以 meannp.nan。每月重新采样resample("M") 会为您提供月末日期。你想得到什么?提供您的预期输出。
  • 您的意思是df.individuals.resample("MS", loffset=pd.Timedelta(days=9)).mean()?此外,您可以添加.interpolate() 来插入缺失的数据(docs)。
  • 你好,我想得到绝对数的总和和平均值。但是你可以看到月份的总和是错误的(我在 excel 中仔细检查了它),而且我的数据从 2015 年 1 月 10 日(十月)开始,输出数据从 1 月开始。

标签: python pandas datetime time-series pandas-resample


【解决方案1】:

Pandas 将您的日期解释为 %Y-%m-%d。 您应该在重新采样之前明确指定您的日期格式。 试试这个:

df.index = pd.to_datetime(df.index, format="%Y-%d-%m")
>>> df.resample("M").sum()
2015-10-31  471

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2012-11-26
    • 1970-01-01
    • 2014-07-24
    • 2020-12-28
    • 2013-03-08
    • 2017-02-20
    • 1970-01-01
    相关资源
    最近更新 更多