본문 바로가기

학습/데이터 분석

[AARRR 분석] 캐글 이커머스 데이터와 SQL로 실습해보기 1

이번에는 AARRR 분석을 위해 MySQL 환경에서 캐글 데이터를 활용한 실습을 진행해 보았다.
이론으로만 공부했던 분석, SQL 문제 풀이만 하던 것을 벗어나, 실제 데이터를 다루며 분석하는 과정을 하며 실무적인 인사이트를 찾아보자.

 

1. 사용 데이터: 브라질 이커머스 데이터 (Olist)

데이터는 브라질 이커머스 데이터인  Brazilian E-Commerce Public Dataset by Olist 이고 아래 캐글 URL 도 첨부!

https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce

 

Brazilian E-Commerce Public Dataset by Olist

100,000 Orders with product, customer and reviews info

www.kaggle.com

 

이 데이터는 100,000개 이상의 주문 데이터를 포함하고 있으며, SQL 실습에 적합하도록 여러 개의 테이블로 나뉘어져 있는 특징이 있다.

이 데이터를 사용하여 분석해봐야지 라고 생각하던 도중 solvesql 에서도 이 데이터로 문제를 만들었다는 것을 알게되었다.

그만큼 SQL 학습에 도움이 되는 데이터라는 말이겠지...?

 

## 아래 내용은 캐글에서 데이터 설명을 제공 해준 내용이다 ##

 

데이터 스키마

데이터는 더 나은 이해와 구성을 위해 여러 데이터 세트로 나뉩니다. 작업할 때 다음 데이터 스키마를 참조하세요.

각 테이블들이 어떤 칼럼으로 연결되어있는지를 설명 해 준다.

key들을 잘 활용하여 join 하면 여러 분석이 가능할 듯 하다.

 

Olist 데이터에서 분석 가능한 주제들

  • NLP: 이 데이터 세트는 다차원을 통해 리뷰 텍스트를 구문 분석할 수 있는 탁월한 환경을 제공합니다.
  • 클러스터링: 일부 고객은 리뷰를 쓰지 않았습니다. 하지만 왜 그들은 행복하거나 화가 났을까요?
  • 판매 예측: 구매일 정보를 통해 향후 판매를 예측할 수 있습니다.
  • 배송 실적: 배송 실적을 살펴보고 배송 시간을 최적화하는 방법을 찾을 수도 있습니다.
  • 제품 품질: 고객 만족도가 낮을 ​​가능성이 높은 제품 카테고리를 발견해 보세요.
  • 기능 엔지니어링: 풍부한 데이터 세트에서 기능을 만들거나 외부 공개 정보를 첨부합니다.

이 중에 몇가지는 실제 분석으로 적용 시켜 볼 만 한듯 하다. 

특히 클러스터링이나 제품품질 등은 SQL로 실습하기에 충분히 좋은 과제이다.

 

 

2. MySQL 환경 설정 & 데이터 업로드 과정

일단 나는 가장 먼저 데이터 셋을 다운받고 MySQL 환경에서 분석할 데이터를 불러오기 부터 시작하였다.

우선 MySQL Workbench에서 AARRR라는 데이터베이스를 생성하였다.
처음에는 "Table Data Import Wizard" 기능을 사용해 데이터를 올리려고 했지만, 데이터 용량이 커서 업로드 속도가 느려지는 문제가 발생했습니다.

👉 그래서 Python을 활용한 자동 업로드 방식으로 변경! 🔥

MySQL workbench 환경에서 바로 데이터 불러올때 사용하는 탭!

 

Python을 활용한 MySQL 데이터 업로드

대량의 CSV 파일을 빠르게 MySQL에 업로드하기 위해 pandas + SQLAlchemy + PyMySQL을 사용!
아래는 실제 사용한 Python 코드

import pandas as pd
from sqlalchemy import create_engine
import pymysql
import os

# 1. MySQL 연결 설정
user = "root"  # MySQL 사용자 이름
password = "****"  # MySQL 비밀번호 (실제 비밀번호 입력)
host = "localhost"  # MySQL 서버 주소
database = "aarrr"  # 사용할 데이터베이스 이름

# SQLAlchemy 엔진 생성 (MySQL 연결)
engine = create_engine(f"mysql+pymysql://{user}:{password}@{host}/{database}")

# 2. 업로드할 CSV 파일 리스트
#폴더 경로 지정하기
path='../AARRR분석'
#해당 폴더 안에 있는 파일 리스트 불러오기
for file in os.listdir(path):
    if 'csv' in file:
        table_name = file.replace("._dataset.csv", "")  # 파일명에서 확장자 제거하여 테이블명으로 사용
        print(file, table_name)
        print(f"📌 {file} → {table_name} 테이블로 업로드 중...")
            # CSV 파일 불러오기
        df = pd.read_csv(file)
    
        # MySQL에 데이터 넣기 (자동으로 테이블 생성!)
        df.to_sql(name=table_name, con=engine, if_exists="replace", index=False)
    
        print(f"✅ {table_name} 테이블 업로드 완료! \n")
    
print("🎉 모든 데이터 업로드 완료!")

코드 설명

MySQL 연결 설정

  • user, password, host, database를 본인 환경에 맞게 설정
  • SQLAlchemy 엔진을 사용해 MySQL과 연결

CSV 파일 자동 업로드

  • os.listdir(path) → 폴더 내 파일 목록을 가져오기
  • if file.endswith(".csv") → CSV 파일만 선택하여 업로드
  • df.to_sql() → MySQL에 테이블 자동 생성 & 데이터 삽입

테이블 명 설정

  • 파일명을 기반으로 테이블 이름을 자동으로 지정 (_dataset.csv 제거)
  • (olist_ 같은 접두어도 제거해서 더 직관적으로 만들걸..)

나는 이전에 엔진 사용하여 파이썬과 MySQL 연동하고, 데이터 올리는 방법을 한번 배운적이 있어서 이 방법이 생각났고, 파이썬 활용하여 데이터를 가져왔다. 

더 효율적이고 좋은 방법이 있겠지만 ㅎㅎㅎㅎ

* 만약 내 코드로 같은 데이터를 활용한다면 1개의 데이터는 파일명이 달라서 에러 날 수 있음!

 

3. 데이터 업로드 결과 확인

Python 코드 실행 후, MySQL Workbench에서 aarrr 데이터베이스를 확인하면 모든 데이터가 정상적으로 들어온 것을 확인할 수 있다.

💡 (만약 테이블이 보이지 않는다면 새로고침 버튼을 눌러주세요!)

USE aarrr;
SHOW TABLES;

 

 

모든 데이터가 잘 있다면 ㅎㅎ 이걸로 마무리 ㅎㅎ 하고!

 4. 마무리 & 다음 계획

이번 실습에서는
MySQL 데이터베이스를 만들고
Python을 활용해 대량의 데이터를 한 번에 업로드하는 과정을 진행

다음 시간에는 본격적으로 AARRR 모델 기반의 데이터 분석을 시작할 예정

  • 획득(Acquisition) 분석 → 신규 고객 수 분석
  • 활성화(Activation) 분석 → 첫 구매 고객 비율 분석