在python中查找中位数时间戳

时间:2017-01-12 21:45:30

标签: python date

[Timestamp('2008-01-25 00:00:00'), Timestamp('2008-01-31 00:00:00'), 
 Timestamp('2008-01-31 00:00:00'), Timestamp('2008-01-09 00:00:00'), 
 Timestamp('2008-01-17 00:00:00')]

我在上面的Python中有一个时间戳列表。如何找到中位数时间戳?

3 个答案:

答案 0 :(得分:3)

假设您使用pandas,这将有效:

import pandas as pd
from pandas import Timestamp

ser = pd.Series([Timestamp('2008-01-25 00:00:00'), 
                 Timestamp('2008-01-31 00:00:00'), 
                 Timestamp('2008-01-31 00:00:00'), 
                 Timestamp('2008-01-09 00:00:00'),
                 Timestamp('2008-01-17 00:00:00')])

pd.Timestamp.fromordinal(int(ser.apply(lambda x: x.toordinal()).median()))

结果:

Timestamp('2008-01-25 00:00:00')

答案 1 :(得分:1)

如果您使用 Python 3.4或更新版,则无需实现自己的median功能。

标准库中的statistics包已包含median函数。包括电池!

所以,假设你有一个可排序的时间戳序列,你可以这样做:

statistics.median(timestamps)

答案 2 :(得分:0)

通常时间戳是数值,因此计算(数学)中位数并不太难。

>>> t = [Timestamp('2008-01-25 00:00:00'), Timestamp('2012-01-25 00:00:00')]
>>> t
[1201215600.0, 1327446000.0]
>>> mid = sum(t)/len(t)
>>> datetime.datetime.fromtimestamp(mid)
datetime.datetime(2010, 1, 24, 12, 0)