ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <TIL> 2024-01-12
    내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2024. 1. 12. 21:07
    • 오늘 한 것
      1. 웹 스크래핑(크롤링) 특강 수강
      2. pymysql 라이브러리 학습
      3. 팀 프로젝트 가설 고민
      4. 팀 프로젝트 관련 SQL 코드 작성

    웹 스크래핑

    오늘 오전 깜짝 라이브 코딩 시연으로 웹 스크래핑(크롤링) 특강을 수강하였다. 

     

    BeautifulSoup 라이브러리를 사용해서 웹 사이트의 게시물 제목과

    내용 리스트를 반복문을 돌며 쭉 스크랩하는 내용을  짧게 강의로 시연해주셨다.

     

    남이 짠 크롤링 코드를 조금 수정해서 돌려본 적은 있었지만 직접 코드를 작성해본 경험은 없었는데

    비록 짧은 시연이었지만, 직접 크롤링을 한다면 어떻게 코드를 짜야할 지 프로세스를 이해할 수 있었다. 

     

    자세한 내용은 블로그에 추후에 직접 공부해서 코드를 짜서 시연해 본 뒤 기록하려고 한다.


    pymysql 라이브러리

    https://jinhyunbae.tistory.com/115

     

    <Python, SQL> pymysql 라이브러리(with Pandas DataFrame)

    pymysql pymysql 라이브러리란 이름 그대로 MySQL을 Python 환경에서 사용할 수 있게 만들어주는 라이브러리이다. 우선 pip install pymysql로 라이브러리를 설치했다면 mysql 작업환경에서 DB와 테이블을 생성

    jinhyunbae.tistory.com

     


    팀 프로젝트

    https://www.kaggle.com/datasets/imakash3011/customer-personality-analysis

     

    Customer Personality Analysis

    Analysis of company's ideal customers

    www.kaggle.com

     

     

    해당 데이터는 고객의 다양한 정보와 고객이 2년간 구매한 카테고리 별 상품 총액과 고객이 몇 번이나 구매 채널을 이용했는지 마케팅에 반응을 했는지 여부 등이 포함된 데이터이다.

     

    우리 팀은 신년 모임 홈파티를 하는 사람들을 대상으로 마케팅 전략을 세운다는 가정을 하여 프로젝트를 진행하기로 했다

    먼저 목표는 데이터를 통해 고객 세그먼트를 나누어 각 세그먼트에 맞는 마케팅 전략을 세운다는 것이다.

     

    어제는 데이터를 DB에 적재하고 간단하게 시각화해보는 수준에서 마무리를 했고 오늘은 실제로 DB에서 

    고객의 연간 수입 기준, 고객의 2년간 구매 총액 등을 기준으로 4분위수로 데이터를 나누어 임의로 세그먼트를 설정해본 뒤 이를 SQL로 구현하여 현황을 파악해보았다.

     

    with Num_Purchases(income_quantile, NumCatalogPurchases, NumStorePurchases, NumWebPurchases) as (
    	select income_quantile,
    	       avg(NumCatalogPurchases),
    	       avg(NumStorePurchases), 
    	       avg(NumWebPurchases)
    	from
    	(
    		select ci.Income,
    		       fr.NumCatalogPurchases,
    		       fr.NumStorePurchases, 
    		       fr.NumWebPurchases,
    		       ntile(4) over(order by ci.Income) as income_quantile
    		from customer_info ci  inner join frequency_recency fr on ci.ID = fr.ID
    		where ci.Income < 500000 and ci.income is not null
    	) a
    	group by income_quantile
    )
    select income_quantile,
           round(NumCatalogPurchases/sum_purchases, 4)*100 catalog_rate,
           round(NumStorePurchases/sum_purchases, 4)*100 store_rate,
           round(NumWebPurchases/sum_purchases, 4)*100 web_rate
    from 
    (
    	select income_quantile,
    	       NumCatalogPurchases, 
    	       NumStorePurchases, 
    	       NumWebPurchases, 
    	       NumCatalogPurchases+NumStorePurchases+NumWebPurchases sum_purchases
    	from Num_Purchases
    )a;

     

    위 쿼리는 그 중 하나로 고객의 연간 가계 수익을 기준으로 나눈 세그먼트에서 평균적으로 얼마나 판매채널을 

    이용하고 있는지 퍼센트로 나타낸 쿼리이다. 실행 결과는 아래와 같은데 1은 수익이 낮고 4로갈수록 수익이 높다는 것을 나타내며 수익이 높을수록 카탈로그 판매가 높아지고 실제 매장에 방문하거나 웹에서 구매하는 비율이 낮아지는 것을 알 수 있다. 

     

    다음주 부터는 본격적으로 세그먼트를 깊게 나누고 나눠진 데이터를 기반으로 또 더 깊게 분석하여 마케팅 전략까지 수립해보는 방식으로 진행하려고 한다. 

    '내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글

    <TIL> 2024-01-15  (0) 2024.01.15
    <WIL> 2024년 1월 2주차 회고  (0) 2024.01.12
    <TIL> 2024-01-11  (0) 2024.01.11
    <TIL> 2024-01-10  (0) 2024.01.10
    <TIL> 2024-01-09  (0) 2024.01.09
Designed by Tistory.