pandasでログデータから特定データの時間当たり出現回数を集計
↓のようなログデータを一定時間ごとに集計したい。
datetime | type |
---|---|
2017-01-01 00:19:04 | 罠 |
2017-01-01 00:57:06 | 魔 |
2017-01-01 01:11:50 | モ |
2017-01-01 01:29:28 | 罠 |
2017-01-01 01:36:43 | 罠 |
2017-01-01 01:42:17 | 魔 |
2017-01-01 01:54:22 | 魔 |
2017-01-01 02:10:51 | モ |
2017-01-01 03:07:43 | モ |
2017-01-01 03:41:04 | 罠 |
2017-01-01 03:57:11 | 罠 |
2017-01-01 04:25:50 | 魔 |
2017-01-01 04:59:47 | 魔 |
2017-01-01 05:01:06 | モ |
2017-01-01 05:18:54 | モ |
2017-01-01 06:28:33 | 罠 |
2017-01-01 06:34:22 | 魔 |
2017-01-01 07:27:21 | 魔 |
2017-01-01 08:19:43 | モ |
2017-01-01 09:07:34 | モ |
やりかた
日付データのformatを”datetime”に変更。
フォーマット指定するやつ↓
- %Y: 年
- %m: 月
- %d: 日
- %H: 時
- %M: 分
- %S: 秒
1 | format='%Y-%m-%d %H:%M:%S' |
datetimeをindexに指定する。
datetimeを一時間刻みにする。
1 | df = df.set_index('datetime') |
こんな感じになる↓
datetime | area |
---|---|
2017-01-01 00:00 | 罠 |
2017-01-01 00:00 | 魔 |
2017-01-01 01:00 | モ |
2017-01-01 01:00 | 罠 |
2017-01-01 01:00 | 罠 |
2017-01-01 01:00 | 魔 |
2017-01-01 01:00 | 魔 |
2017-01-01 02:00 | モ |
2017-01-01 03:00 | モ |
2017-01-01 03:00 | 罠 |
2017-01-01 03:00 | 罠 |
2017-01-01 04:00 | 魔 |
2017-01-01 04:00 | 魔 |
2017-01-01 05:00 | モ |
2017-01-01 05:00 | モ |
2017-01-01 06:00 | 罠 |
2017-01-01 06:00 | 魔 |
2017-01-01 07:00 | 魔 |
2017-01-01 08:00 | モ |
2017-01-01 09:00 | モ |
1 | df["area"].resample('3H').count() |
3時間毎に区切って数を表示。
datetime | value |
---|---|
2017-01-01 00:00 | 8 |
2017-01-01 03:00 | 7 |
2017-01-01 06:00 | 4 |
2017-01-01 09:00 | 1 |
参考