まず、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 を使用できる場合があります)。
1 日あたりのアクティベーションをカウントすると、次のようになります。
for date in date_bins:
print "activations on %s: %s"%(date, len(date_bins[date]))
もちろん、その情報を取得して matplotlib が必要とする形式に変換するのはもう少し手間がかかりますが、ここからはそれほど悪くはありません。