【问题标题】:Pandas Time Series normalize day wisePandas 时间序列按天正常化
【发布时间】:2017-03-31 23:20:24
【问题描述】:

我想以每日为基础标准化时间序列。 现在我的代码如下:

for date in set(df.index.date):
    print('Date: ' + str(date))
        df[df.index.date == date] = df[df.index.date == date].div(df[df.index.date == date].abs().max())
print('Normalization Done')

我工作正常,但速度很慢。你知道一些更好的方法吗? 也许一些地图功能或列表理解?直到现在才弄清楚该怎么做。

【问题讨论】:

  • 我认为它也可以与 itertools 一起使用,但我对这个包并不熟练。
  • df.index = df.index.div(df.index.abs().max()) 不起作用吗?你是为日期时间或只是日期时间组件?看起来您想先将日期时间删除或标准化为 00:00:00 次的日期,然后再规范化索引?
  • 我不想规范化/更改索引。我想每天标准化时间序列的值。为此,请使用 index.date 信息。
  • 那么某种形式的 groupby 除以该日期最大值或整个 df 的最大值?

标签: pandas time-series normalization series


【解决方案1】:

您可以将数据框重新采样为天,并对所有值求和,这将为您提供每天的标准化值。然后,您可以将其重新采样回原始数据帧的索引,然后简单地划分。

下面这行代码可以解决问题:

df / df.resample('D').sum().asof(df.index)

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 2015-08-12
    • 2016-08-24
    • 2015-12-14
    • 2014-08-20
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多