获取dicts列表中的平均出现次数

Lea*_*one 1 python date frequency formula

给定一个字典列表(来自MongoDB的日志JSON),其中dict的一个值是日期时间值,我需要知道它发生的频率.

让我们说:

[
    {"time": "2010-11-11 03:23:59"},
    {"time": "2010-11-12 10:16:15"},
    {"time": "2010-11-12 14:51:13"},
    ...
]
Run Code Online (Sandbox Code Playgroud)

频率需要如下:
3 times in a week
或者
1 time in an hour
取决于频率(如果每天x times in a day不超过一次,只返回,如果不超过一周,则仅使用x times in a week,等等).

unu*_*tbu 6

您可以将字符串解析为日期时间,找到最大值和最小值,减去查找时间值,并根据时间值指定持续时间:

import datetime as dt
data=[
    {"time": "2010-11-11 03:23:59"},
    {"time": "2010-11-12 10:16:15"},
    {"time": "2010-11-12 14:51:13"},
    ]

def freq(data):
    dates=[dt.datetime.strptime(dct['time'],'%Y-%m-%d %H:%M:%S') for dct in data]
    date_min=min(dates)
    date_max=max(dates)
    span=date_max-date_min
    l=len(dates)
    if span<dt.timedelta(hours=1):
        duration='an hour'
    elif span<dt.timedelta(hours=24):
        duration='a day'
    elif span<dt.timedelta(days=7):
        duration='a week'
    else:
        duration='all'
    return l,duration

num,duration=freq(data)
print('{n} times in {d}'.format(n=num,d=duration))
Run Code Online (Sandbox Code Playgroud)

产量

3 times in a week
Run Code Online (Sandbox Code Playgroud)