2025-12-17 (수)

brusel Luam·2025년 12월 18일
post-thumbnail
  • 포트폴리오에 넣을 새로운 프로젝트 주제로 'Olist dataset'을 선정하였다.
  • 선정이유:
    1) SQL 입문자로써, 이만한 양질의 데이터를 찾기 어려웠다.
    2) 선행분석들이 많아 어려움을 겪을 때 참고할 수 있는 자료가 많았다.
  • 진행목표:
    12월 안에 SQL 및 Python을 통한 분석과 POWER BI 대시보드, 포트폴리 오까지 완성하는 것을 목표.
  • 세부계획:
    1) 매일 분석한 내용들을 벨로그에 기록하고 회고.
    2) 추가 작성 예정

테이블 및 컬럼 확인

데이터 정제

  • 처음 데이터를 다운로드 받았을 때, 텍스트 데이터 중 알파벳이 깨져 들어있는 행들이 많았다.
  • 우선, 엑셀 상으로 Ctrl+F 기능을 통해 한글로 잘못들어온 글자들을 알파벳으로 변환해주었다. 'geolocation' 테이블의 'city' 컬럼에서 고급필터 기능을 통해 어떤 도시 종류들이 있는지 쭉 뽑아낸다음, 잘못 받아진 글자들을 변환하였다.
  • 예를 들어, 찾->a, 챕->e, 찼->o으로 잘못 변환되어 받아졌음을 확인하고 ctrl+F를 통해 한번에 바꾸어 주었다.
  • 마찬가지로, 'order_reviews' 테이블의 'comment message' 칼럼에도 해당 작업이 필요함을 뒤늦게 확인하였다. (Python을 통해 SQL로 Data Import를 하는 과정에서 깨져서 들어온 글자 때문에 인코딩 문제를 겪으며 해당 테이블에도 같은 문제가 있음을 파악하였다)
  • 너무 많은 텍스트 데이터가 있어서, 엑셀 상으로 하나하나 바꾸어주는 대신에 기존에 설정한 'utf-8'을 'latin1'로 바꿔주어서 깨진 특수 문자를 전부 강제로 문자로 읽게 하였다.

환경 세팅 단계(인프라)

1. 물리적 스키마 생성

  • MySQL에서 'olistdata'라는 이름으로 물리적 스키마를 생성해주었다.(Creata New Scheme)

2. 데이터 적재

  • MySQL Database 카테고리에 있는 'Data Import'기능을 통해 테이블을 불러오려했으나 잘 되지않았다.
  • 'Table Data Import Wizard'를 통해 파일별로 데이터를 불러오려했으나 시간이 너무 소요되는 문제가 있었다.
  • 그래서 그냥 Python으로 SQL에 데이터를 보내는 방식을 택하기로 하였다.
[사용코드]

engine = create_engine(
    "mysql+pymysql://root:Marine13258!@localhost:3306/olistdata"
)
base_path = r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset"

files = {
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_customers_dataset.csv": "customers",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_geolocation_dataset.csv": "geolocation",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_order_items_dataset.csv": "orders_items",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_order_payments_dataset.csv": "order_payments",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_order_reviews_dataset.csv": "order_reviews",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_orders_dataset.csv": "orders",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_products_dataset.csv": "products",
    r"C:\Users\SAMSUNG\OneDrive\바탕 화면\olist dataset\olist_sellers_dataset.csv": "sellers",
}

for files, table in files.items(): 
    print(f"{table}) 업로드 중...")
    df = pd.read_csv(
        os.path.join(base_path, files),
        encoding="latin1"
    )
    df.to_sql(table, engine, if_exists='replace', index=False)
    print(f"{table} 완료")


print("전체 업로드 완료")

분석 단계

1. 모델링

  • 'Moldes' 카테고리에서 데이터 구조를 파악하고 EER 다이어그램을 통해 도식화하기 위해 데이터를 뜯어 보았다.
  • 용어나 PK, FK 등 개념들이 헷갈려서 기본서와 유튜브를 다시 찾아보았다.
  • 그래도 아직 어떻게 해야할지 감이 잡히지 않는다.

<앞으로의 진행방향>

  • 데이터 구조 파악 (PK/FK 설정)
  • 다이어그램으로 도식화
  • 데이터 전처리
  • KPI 설정
  • 분석 주제 설정

0개의 댓글