Skip to main content
API 응답과 이벤트 로그는 리스트·중첩 JSON을 포함하는 경우가 많습니다. Pandas에서는 explode, json_normalize를 조합해 분석 가능한 평탄 구조로 변환합니다.

explode

df = pd.DataFrame({
    "user_id": [1, 2],
    "tags": [["ml", "rag"], ["vision"]],
})

out = df.explode("tags", ignore_index=True)
print(out)
explode 이후 row 수가 증가하므로, 집계 기준이 행 수인지 사용자 수인지 먼저 구분합니다.

json_normalize

from pandas import json_normalize

rows = [
    {"id": 1, "meta": {"region": "seoul", "device": "ios"}},
    {"id": 2, "meta": {"region": "busan", "device": "android"}},
]

flat = json_normalize(rows, sep="_")
# columns: id, meta_region, meta_device

중첩 + 배열 동시 처리

# 1) json_normalize로 1차 평탄화
base = json_normalize(payload, record_path=["events"], meta=["user_id"])

# 2) 리스트 컬럼 explode
base = base.explode("items", ignore_index=True)

운영 체크

  • 변환 전/후 row 수 변화율
  • 원본 키(event_id, user_id) 보존 여부
  • null 증가 구간(누락 path) 여부

이어서 볼 문서