【发布时间】:2017-01-14 11:27:17
【问题描述】:
我在 pandas 中有一个时间序列数据,我想通过使用 pandas 指定频率的重采样函数来计算不同 bin 中的数据数量。
如果你使用的话,熊猫系列看起来像下面这样:
test_data.head(10)
您将获得结果(仅显示前 10 个数据,因为它是一个大型系列):
Created
2015-11-29 23:28:50 KBH889
2015-11-29 23:30:43 KBH89U
2015-11-29 23:34:06 KBH88K
2015-11-29 23:38:08 KBH8CC
2015-11-29 23:38:36 KBH83T
2015-11-29 23:40:52 KBH8CF
2015-11-29 23:46:27 KBH8F1
2015-11-29 23:50:01 KBH8DQ
2015-11-29 23:54:29 KBH8FV
2015-11-29 23:58:01 KBH8C6
Name: Order_Number, dtype: object
然后我使用频率为“4541S”的重采样功能(它必须是4541s,不能更改!)
test_data.Order_Number.resample("4541S").count()
结果:
Created
2015-11-29 22:42:18 9
2015-11-29 23:57:59 15
2015-11-30 01:13:40 6
2015-11-30 02:29:21 3
2015-11-30 03:45:02 2
Freq: 4541S, Name: Order_Number, dtype: int64
重采样结果以日期时间索引2015-11-29 22:42:18 开始。这是不需要的 start_time。我希望时间是该系列的最小值,在这种情况下,应该从2015-11-29 23:28:50 开始重新采样。有人知道怎么做这个吗?我尝试在重采样功能中使用参数base 来调整它。似乎很难。
这是用于测试的csv file。导入它并使用 count() 重新采样。
【问题讨论】:
-
count()正在返回一个系列?是对的还是您在问题上错误地添加了.count() -
我对您的数据类型感到困惑。您如何重新采样非数字列?你能提供一个包含数据的 .csv 文件吗?
-
@vmg: count() 用于计算重采样数据集的数量。它确实返回了一个新的分箱时间序列。只要您的索引是 datetimeindex,您就可以重新采样任何列,我认为
-
@vmg:我附上了 csv 文件。你可以试试我的代码
test_data.resample("4541S").count() -
好的,我现在明白了。我很好奇你是如何用
.count()得到这些结果的,答案是resample API changed in pandas version 0.18,我不熟悉。我现在可以复制你的结果了。
标签: python pandas time-series