fork(1) download
  1. from datetime import datetime, timedelta
  2.  
  3. example_table = [
  4. {'first_alerted_time':datetime(2014, 12, 11, 2, 1,45)},
  5. {'first_alerted_time':datetime(2014, 12, 11, 2, 2,33)},
  6. {'first_alerted_time':datetime(2014, 12, 11, 2, 2,45)},
  7. {'first_alerted_time':datetime(2014, 12, 11, 2, 3,45)},
  8. ]
  9. start_date = datetime(2014,12,11)
  10. step = timedelta(minutes=3)
  11. end_date = datetime(2014,12,12)
  12.  
  13. def date_range(start, end, step):
  14. d = start
  15. while d < end: # right-open interval
  16. yield d
  17. d += step
  18.  
  19. import numpy as np
  20. times = np.fromiter((d['first_alerted_time'] for d in example_table),
  21. dtype='datetime64[us]', count=len(example_table))
  22.  
  23. bins = np.fromiter(date_range(start_date, end_date + step, step),
  24. dtype='datetime64[us]')
  25. a, bins = np.histogram(times, bins)
  26. print(dict(zip(bins[a.nonzero()].tolist(), a[a.nonzero()])))
Success #stdin #stdout 0.48s 20648KB
stdin
Standard input is empty
stdout
{datetime.datetime(2014, 12, 11, 2, 0): 3, datetime.datetime(2014, 12, 11, 2, 3): 1}