こんにちは、ミナピピン(@python_mllover)です。
最近業務でpandasのgroupbyでbigqueryと同じような感じでDAUを集計したいなあと思ったのですが、よくよく考えるとpandasってbigqueryのDATE()みたいにタイムスタンプを便利に変換して集計期間の単位を変更できるのか。。。?って思っていたのですが、pd.Grouper()という関数を用いて簡単に行うことが可能らしいです。
サンプルデータの作成
まずは適当にサンプルデータを作成します。
import random import datetime import pandas as pd now = datetime.datetime.now() data = [] for i in range(1,4): id_ = i for s in range(5): login_datetime = now.replace(day=random.randint(i+1,10), hour=random.randint(1,23), minute=0, second=0, microsecond=0) data.append([id_, login_datetime]) df = pd.DataFrame(data,columns=['user_id', 'login_datetime'])
DAUの集計
# DAU(日ごとのログインユーザ数を集計) df.groupby(pd.Grouper(key='login_datetime', freq='1d')).count()
freqで頻度を変えて集計することも可能です。
コメント
[…] 関連記事:【Python】pandasのgroupbyで日ごとの数値データを集計する […]
[…] 関連記事:【Python】pandasのgroupbyで日ごとのデータを集計する […]