首先,您需要加载 JSON 文件:
import json
with open("logfile.json", "r") as logfile:
records = json.load(logfile)
记录将是包含您的记录的列表或字典。
假设您的日志文件如下所示:
[u"2000-01-01T00:30:15+00:00",
u"2000-01-01T00:30:16+00:00",
...
]
记录将是一个字符串列表。所以解析日期只是:
import datetime
for record in records:
datepart, _ = record.split("T")
date = datetime.datetime.strptime(datepart, "%Y-%m-%d")
希望这足够清楚。使用 "string".split 和 datetime.strptime 应该可以解决问题,尽管您不必将其解析为日期对象来装箱,但这可能会使以后的事情变得更容易。
最后,使用列表字典进行分箱应该非常简单。从我们上面得到的开始,让我们添加分箱:
import collections
import datetime
date_bins = collections.defaultdict(list)
for record in records:
datepart, _ = record.split("T")
date = datetime.datetime.strptime(datepart, "%Y-%m-%d")
date_bins[date].append(record)
这应该为您提供一个字典,其中每个键都是日期,每个值是当天记录的记录列表。
您可能希望按日期对其进行排序(尽管如果数据已经有序,您可能可以使用 collections.OrderedDict)。
每天计算激活可能类似于:
for date in date_bins:
print "activations on %s: %s"%(date, len(date_bins[date]))
当然,获取这些信息并将其处理成 matplotlib 需要的格式需要做更多的工作,但从这里开始应该不会太糟糕。