본문 바로가기
Database

Mixpanel를 활용한 데이터 추출 2

by 혀넝 2023. 3. 1.

2023.02.24 - [Database] - Mixpanel를 활용한 데이터 추출 1

 

Mixpanel를 활용한 데이터 추출 1

Mixpanel(믹스패널)은 데이터 분석을 지원해 주는 툴로, 주로 유저 행동에 대해 기록하고 그 통계를 보여준다. 믹스패널을 사용하기 위해서는 먼저 코드에 믹스패널 트래킹 코드를 심는 작업이 필

cozy-coding.tistory.com

이전글에서 믹스패널의 기본적인 활용법을 알아봤다.

오늘은 믹스패널 API에서 가져온 데이터를 JSON 파일로 저장하고 간단하게 활용하는 방법을 알아보려고 한다.

 

JSON 파일 저장

 이전 글에서 데이터를 터미널에서 확인할 때의 코드는 아래와 같았다.

response = requests.get(url, headers=headers)

print(response.text)

이렇게 하면 여러 줄로 object가 프린트가 된다.
여러 줄의 데이터를 리스트에 저장하기 위해 splitlines()를 사용한다.

response = requests.get(url, headers=headers)
data = response.text.splitlines()

 

처음에는 data에 담긴 데이터 하나하나를 json으로 만들고 with open으로 파일을 읽기 모드로 열어 작성을 하려고 했다.

data = response.text.splitlines()

for d in data:
    json_data = json.loads(d)

file_path = './mixpanel.json'
with open(file_path, 'w') as outfile:
    json.dump(json_data, outfile, indent=4)

이 코드를 실행시키면 mixpanel.json이라고 하는 파일이 생성된다.
내 예상에는 data에 담긴 모든 데이터가 추가될 줄 알았는데 가장 마지막 데이터만 json 파일에 저장됐다.
믹스패널에서 불러온 모든 데이터가 json 파일에 저장되길 원했기 때문에 코드를 아래와 같이 변경했다.

data = response.text.splitlines()
test_list = []
for d in data:
    json_data = json.loads(d)
    test_list.append(json_data)

file_path = './mixpanel.json'
with open(file_path, 'w') as outfile:
    json.dump(test_list, outfile, indent=4)

json으로 변경한 데이터를 test_list라고 하는 리스트에 하나씩 추가하고, 마지막에 json.dump에 해당 리스트를 인자로 넘겼다.
이렇게 하면 모든 데이터가 json 파일에 저장된다.

[
    {
        "event": "event_name",
        "properties": {
            "time": 1674573156,
            "$region": "Seoul",
            .....
    	}
    },
    ...
]

 

CSV 변환

json 파일을 csv 파일로 변환하는 건 csv 변환기를 이용했다.
(python으로 변환할 수 있을 것 같지만 시간이 없어서 구현은 패스했다...나중에 기회가 된다면 추가하고자 한다.)

 

간단한 활용

csv 파일로 변환한 데이터를 사용해서 코드를 작성해야 한다.
이때 pandas를 사용했다.

pandas에서 csv 파일을 읽을 땐 read_csv() 함수를 사용한다.
한 json은 csv의 한 줄로 저장이 되는데, 데이터를 한 줄씩 읽어서 활용하기 위해 itertuples()를 사용했다.

import pandas

csv = pandas.read_csv('./mixpanel.csv')

for c in csv.itertuples(index=False):

 

위에서 믹스패널 데이터를 json으로 저장했을 때 time을 보면 이상한 숫자로 이루어져 있는데, 이건 unix 타임으로 코드에서 활용하기 위해서 datetime으로 변경해야 했다.

unix_time = c[1]. # 믹스패널 properties/time 컬럼 위치
time = datetime.datetime.utcfromtimestamp(unix_time).date()

unix time을 c[1]과 같이 인덱스를 이용해 가져온 것처럼 활용할 다른 데이터들도 이렇게 가져오면 된다.
인덱스로 가져온 데이터를 Item.objects.get(time=time)과 같이 활용할 수 있다.

 

믹스패널에서 가져온 데이터의 기본적인 활용에 대한 설명은 여기까지가 된다.

'Database' 카테고리의 다른 글

Mixpanel를 활용한 데이터 추출 1  (0) 2023.02.24