【问题标题】:Python Time SeriesPython 时间序列
【发布时间】:2016-09-22 05:40:25
【问题描述】:

我正在研究房地产现金流模拟。

我最终想要的是一个时间序列,我每天都会报告房产是否空置、出租以及是否收取租金。

在我目前的代码中,我首先创建了一个利润数组,其值为“已出租”、“空置”或“今天您收取了 1000 美元的租金”,因此我使用它来创建我的时间序列:

rng=pd.date_range('6/1/2016', periods=len(profit), freq='D')
ts=pd.Series(profit, index=rng)

为简化起见,我假设我每 30 天收取一次租金。现在我想更具体一点,每月的第 5 天收集一次(例如),并在下一个租户搬进来的那天灵活。

您知道命令或可以学习如何逐月迭代的好资源吗?

任何帮助将不胜感激

【问题讨论】:

  • 我查看了这两个参考资料,但仍然无法弄清楚。假设我有一个时间序列,我想将值“1000”输入到随机的一天,之后的每个月输入一年。
  • 对不起,熊猫人应该插话。我可以使用常规日期时间和随机日期的随机模块来做到这一点——基本上循环 12 个月。我认为 datetime 将与熊猫时间序列兼容..但我对熊猫一无所知!

标签: python-2.7 pandas time-series


【解决方案1】:

您可以使用date_range.shift()freq='M' 用于月末频率)和pd.datetools.day 来构建日期序列,如下所示:

date_sequence = pd.date_range(start, end, freq='M').shift(num_of_days, freq=pd.datetools.day)

然后使用此序列从 DateTimeIndex 中选择日期

df.loc[date_sequence, 'column_name'] = value

或者,您可以像这样使用pd.DateOffset()

ts = pd.date_range(start=date(2015, 6, 1), end=date(2015, 12, 1), freq='MS')

DatetimeIndex(['2015-06-01', '2015-07-01', '2015-08-01', '2015-09-01',
           '2015-10-01', '2015-11-01', '2015-12-01'],
          dtype='datetime64[ns]', freq='MS')

现在增加 5 天:

ts + pd.DateOffset(days=5)

得到:

DatetimeIndex(['2015-06-06', '2015-07-06', '2015-08-06', '2015-09-06',
               '2015-10-06', '2015-11-06', '2015-12-06'],
              dtype='datetime64[ns]', freq=None)

【讨论】:

  • 这是完美的。我使用您的 date_sequence 和 date_sequence.union() 创建了一个时间序列,该时间序列连接了从不同点开始并具有不同时间长度的时间序列。谢谢!
  • 是否可以在不使用 .shift() 的情况下创建从 6 月 6 日到 12 月 6 日的时间序列(例如)?我问这个的原因是,通过迭代使用 shift,我最终会犯一些小错误,比如:2 月 11 日、3 月 14 日、4 月 12 日、5 月 13 日等等,所以它不会“坚持”到当天。这个错误很小,可能可以忽略不计,但我想知道我是否可以让它准确。谢谢!
  • 这有点工作。让我解释。我换班的天数在我的代码中增加。假设我从 8 天开始移动,然后是 16 天……当我达到 32 天时,它会移动 2 个月零一天,而不是一个月零一天。当我输入 pd.DateOffset(days=32) 时,它似乎将其读取为 pd.DateOffset(months=1, days=32)
  • 也许您可以提出一个新问题并更详细地展示您当前的代码和所需的输出是什么样的?我一直在尝试回答您最初的问题,但我们似乎没有在这里得出结论。
  • 很抱歉,您的帮助非常棒。我将发布另一个问题,希望能更清楚地说明情况。希望你能回复它
猜你喜欢
  • 2015-06-15
  • 2018-09-20
  • 2020-05-15
  • 2020-05-20
  • 2017-06-14
  • 2016-09-09
  • 2017-05-01
  • 2020-09-23
  • 1970-01-01
相关资源
最近更新 更多