【问题标题】:python getting histogram bins for datetime objectspython获取日期时间对象的直方图箱
【发布时间】:2019-09-02 02:02:14
【问题描述】:

我有两个列表。

  1. 列表times 是从2018-04-10 00:00datetimes 的列表 2018-04-10 23:59.

  2. 对于times 中的每个项目,我在labels 列表中记录了01 的相应标签。

我的目标是获得每分钟间隔的平均标签值(在01 之间)。

times = [Timestamp('2018-04-10 00:00:00.118000'),
 Timestamp('2018-04-10 00:00:00.547000'),
 Timestamp('2018-04-10 00:00:00.569000'),
 Timestamp('2018-04-10 00:00:00.690000'),
.
.
.
Timestamp('2018-04-10 23:59:59.999000') ]

labels = [0,1,1,0,1,0,....1]

在哪里len(times) == len(labels)

对于2018-04-10 00:002018-04-10 23:59 之间的每一分钟间隔,分别是列表中的最小和最大时间,我试图获得两个列表:

1) 分钟间隔的开始时间。

2) 该区间内所有日期时间的平均标签值。

尤其是我在 (2) 方面遇到了麻烦。

注意:times 列表不一定按时间顺序排列

【问题讨论】:

  • times 排序了吗?
  • for every minute interval. - 00:00:00.00000:00:59.999?,什么是 Timestamp
  • @wwii 没有时间不排序。是的,每分钟间隔一次。
  • 什么是时间戳?

标签: python list datetime histogram


【解决方案1】:

首先,我从我如何生成上述格式的数据开始

from datetime import datetime
size = int(1e6)

timestamp_a_day = np.linspace(datetime.now().timestamp(), datetime.now().timestamp()+24*60*60, size)
dummy_sec = np.random.rand(size)

timestamp_series = pd.Series(timestamp_a_day + dummy_sec)\
.sort_values().reset_index(drop=True)\
.apply(lambda x: datetime.fromtimestamp(x))

data = pd.DataFrame(timestamp_series, columns=['timestamp'])
data['label'] = np.random.randint(0, 2, size)

让我们解决这个问题! (希望我能准确理解你的问题哈哈哈)

1) data['start_interval'] = data['timestamp'].dt.floor('s')
2) data.groupby('start_interval')['label'].mean()
【解决方案2】:
  • ziptimeslabels 然后sort;
  • 编写一个函数,返回时间戳的日期、小时、分钟;
  • groupby那个函数;
  • sum 并平均每个组的标签

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    相关资源
    最近更新 更多