【问题标题】:Interpolate rows in a Pandas dataframe based on Quarterly sales根据季度销售额在 Pandas 数据框中插入行
【发布时间】:2020-08-26 08:14:22
【问题描述】:

我有一个包含如下数据的数据集:

Customer, Quarter, TotalSales
Customer1, Q1, 2000
Customer2, Q1, 1232
Customer1, Q2, 432423
Customer2, Q2, 2222
Customer1, Q3, 242343
...

我们希望根据各个日期将其插入到更细粒度的视图中。 是否有可能以某种方式平滑每个季度 3 个月的销售数据,以便 该季度的总销售额仍然相同,但仍使值与当天的数据相匹配之前和之后的季度?

Customer, Quarter, Daily Sales
Customer1, 2020-01-01, interpolated value
Customer1, 2020-01-02, interpolated value
Customer1, 2020-01-03, interpolated value
....
Customer1, 2020-01-31, interpolated value

                        ^ sum of these still add up to  Customer1, Q1, 2000
...

【问题讨论】:

  • 您无法访问月度数据吗?如果不是,您希望您的“内插值”有哪种行为?线性?二次方?指数?...有相当多的可能性。
  • 当您从季度到天重新采样时,您希望将 TotalSales 划分为 aprox。 90 天?
  • “你不能访问月度数据吗?”显然没有。我不认为您可以使用列出的任何这些变体,并且仍然可以获得整个期间的正确总数。如果其中一部分下降,则需要在其他地方增加以保持正确的总数。
  • 此方法可以提供帮助,特别是如果您可以访问与每日销售额相关的额外每日数据:stackoverflow.com/questions/60058095/…

标签: python pandas


【解决方案1】:

有一类方法称为“时间分解”方法。看this包上 GitHub。 基本上,您可以指定较低频率的时间序列并将其转换(外推)为较高频率的时间序列。我只在 R 中使用过这个包,但似乎 python 实现应该几乎相同。您可以指定较高频率的观察值是否应与较低频率的观察值(或其他值)相加。

【讨论】:

  • 确实很有趣。要真正从中受益,需要遵循与 TotalSales 类似的运动的另一个相关的每日系列。例如,就问题而言,它可能是每日出口数据。
猜你喜欢
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多