Pythonを使ってmixpanelにデータを送信してみる

mixpanelへのデータ送信をPython使ってやってみたよん。
2023.10.31

ミックスパネラーの國崎です。
今回はサーバーサイド言語として人気のPythonを使ってmixpanelにデータを送信するをやってみました。

この記事でわかること

  • Pythonを使ったmixpanelへのデータ送信
  • Pythonで送信するとmixpanelにどんな感じで反映されるか

今回はPythonを記述していく環境としてGoogle Colaboratoryを使います。

Pythonで書いてみる

インストール

まずmixpanelのライブラリをインストールします。

pip install mixpanel

ライブラリをインストールしたらmixpanelに送るプロジェクトトークンを以下のように指定します。

from mixpanel import Mixpanel
mp = Mixpanel("YOUR_TOKEN")

mixpanelへのデータ送信

ライブラリのインストールをしたら早速データをmixpanelに送信してみます。
以下はイベントデータを送信する際の例です。

# tracks an event with certain properties
mp.track(DISTINCT_ID, 'イベント名', {'イベントプロパティ1' : 'イベントプロパティ1の値', 'イベントプロパティ2': 'イベントプロパティ2の値'})

DISTINCT_IDはmixpanel内においてユーザーを一意に識別するための値になります。
よくあるユースケースだと会員IDなどがここでは用いられます。

実際にmixpanelに送信する内容で記載してみます。

mp.track("masao_python", 'button clicked', {'color' : 'blue', 'size': 'large'})

これで実行すると以下のようにmixpanelにデータ送信がされていました。
20231031-01python

上記の状態だと指定したプロパティしか取れていないですが、実際にはユーザーが使っているブラウザやデバイス、OSのユーザーエージェントに紐づく情報も取得することができます。
その場合は以下の手順を行います。

ua-parserをインストールします。

pip install ua-parser

以下はサンプル文です。

from mixpanel import Mixpanel
from ua_parser import user_agent_parser

# Mixpanelのインスタンスを初期化
mp = Mixpanel("YOUR_TOKEN")

def track_to_mp(request, event_name, properties):
    # ユーザーエージェントの情報を解析してプロパティに追加
    parsed = user_agent_parser.Parse(request.headers["User-Agent"])
    properties.update({
        "$browser": parsed["user_agent"]["family"],
        "$device": parsed["device"]["family"],
        "$os": parsed["os"]["family"],
    })

    properties["ip"] = request.remote_addr
    mp.track(request.user_id, event_name, properties)

def handle_event(request):
    # イベントを処理するロジック(適宜変更してください)

    # サンプルイベントをMixpanelに送信
    track_to_mp(request, "sample_event_name", {"sample_property_key": "sample_property_value"})

    return "Event tracked successfully!"

# 実際のリクエストオブジェクトを使用してこの関数を呼び出す必要があります
# result = handle_event(actual_request)
# print(result)

実際に計測ができるとこんな感じでイベント時のDevice/Browser/OSも取得ができます。
20231031-02python

またユーザーのプロフィールに関する情報であるユーザープロパティを送信したい場合は以下の記述を行います。

## create or update a profile with First Name, Last Name,
## E-Mail Address, Phone Number, and Favorite Color
## without updating geolocation data or $last_seen
mp.people_set('kunisaki_python', {
    '$first_name'    : 'masao',
    '$last_name'     : 'kunisaki',
    '$email'         : 'masaosama.kunisaki@example.com',
    '$phone'         : '5555555555',
    'Favorite Color' : 'red'
}, meta = {'$ignore_time' : True, '$ip' : 0})

上記のデータをmixpanelに送信すると以下のユーザープロパティが計測されていました。
20231031-03python

以上Pythonを使ってmixpanelにデータを送信してみる、の検証でした。

参考:mixpanelのpythonドキュメント

クラスメソッドが行っているmixpanelの支援

クラスメソッドではmixpanelをすでにお使いのお客様にも以下の支援サービスを提供しております。

  • PoC…検証環境提供
  • プランニング支援…KPI設計の支援/QA対応
  • 実装支援…開発の支援/SaaS連携支援
  • 伴走支援…定例など

mixpanelのKPI設計は以下記事でも紹介している専用の測定フレームワークを用いたプランニング支援をさせていただきます。

mixpanelの測定フレームワーク作り方のコツ!サンプルを例に解説!

また実装いただいた後の伴走支援では実際にお使いになられているお客様の課題感などをヒアリングさせていただき、ご要望に沿った内容での定例を設けさせていただき、成果につなげるための分析手法のご提案などをさせていただきます。

今回の記事を見てmixpanelについて詳細の話を聞きたい、興味を持ったという方はぜひぜひクラスメソッドまでお問い合わせください!!

クラスメソッドへのmixpanelお問い合わせ