본문 바로가기

Python

[데이터 분석] 메타코드M '파이썬 입문 데이터분석 프로젝트 만들기' 강의 후기 (1/3)

728x90
반응형

 

  이번 글은 메타코드M의 '파이썬 입문 데이터분석 프로젝트' 영상을 보고 정리한 것이다. '현실과 동떨어진 이론은 가치가 없다'고 생각하기에 공부하는 것에 그치는 것이 아니라 실전에 활용할 수 있도록 역량을 키우는 것이 중요하다고 여긴다. 그래서 파이썬으로 분석 프로젝트를 직접 해보는 이 영상이 마음에 들었다. 본 강의에 관심이 있는 독자는 아래의 링크를 클릭하여 상세한 정보를 확인하면 된다.

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

 

  강의는 colab으로 진행되는데 필요한 자료는 구글 드라이브 (링크)에서 가져올 수 있다.

 

Index

     

    파이썬 데이터 분석 프로젝트 #1

      이 강의는 5개의 섹션으로 나누어져 있는데 기초문법과 데이터 전처리, 데이터 시각화, EDA와 지표정의라는 3개의 틀로 분할하여 기록할 것이다.  

      데이터 분석은 데이터 추출 ▷ 데이터 전처리 ▷ 데이터 시각화 ▷인사이트 도출 ▷ 데이터 모델링을 통한 예측 순으로 진행된다. 여기서는 빨간색 박스에 해당하는 부분만 다루었다.

    파이썬 기초문법

    1. Colab 단축키

    • Ctrl/Cmd + M + D: 현재 셀 삭제.
    • Ctrl/Cmd + M + B: 현재 셀 아래에 새 셀을 삽입.
    • Ctrl/Cmd + M +  A: 현재 셀 위에 새 셀을 삽입.
    • Ctrl/Cmd + M + M: 현재 셀을 마크다운 셀로 변경.
    • Ctrl/Cmd + M + Y: 현재 셀을 코드 셀로 변경.
    • Ctrl/Cmd + /: 코드 셀의 선택된 줄을 주석 처리.

    2. f-string

    x = 7
    y = 2
    
    quotient = x//y
    remainder = x%y
    
    text = f"{x} 나누기 {y}의 몫은 {quotient}이고 나머지는 {remainder}이다."
    print(text)

    3. if문

    def compare(a, b):
     if a>b:
       output = "a is bigger"
     elif a<b:
       output = "b is bigger"
     else:
       output = "a, b are same"
     return output
    
    print(compare(10, 40))

    4. While문

     while문은 조건이 참인 코드를 반복 실행한다. 아래 예제 (100이하 3의 배수의 합)의 답은 1,683이다.  

    # while 루프를 사용하여 3의 배수의 합 계산
    init = 0  # 초기값 0으로 설정
    i = 1
    while i <= 100:  # 100 이하 반복
      if i % 3 == 0:  # 3의 배수인지 확인
          init += i  # 맞으면 합산
      i += 1  # i 값을 증가
    
    print(init)

    데이터 전처리

      grouping, pivot 등 데이터프레임을 조작하는 여러 내용을 배우지만 프로젝트의 몇몇 코드를 뜯어보며 정리하고자 한다.

    1. 데이터 불러오기

    from google.colab import drive
    drive.mount('/content/drive')

      본인의 구글 드라이브를 인식시켜 colab에서 불러오도록 한다.

    2. 마케팅 데이터 전처리 자동화

    • CPC: Cost Per Click
    • ROAS: Return On Advertising Spend. 광고로 얻는 수익 / 광고 지출
    ad['week'] = ad.date.dt.to_period('W').dt.to_timestamp()
    ad.tail()

      date 컬럼을 주단위로 변경하고 to_timestamp()로 해당 주의 첫째날을 출력한다.

    log2 = log[~log.campaign.isna()]
    log2.head()

       log 데이터프레임의 campaign 컬럼에서 결측치가 없는 것을 log2로 호출한다.

    od1 = pd.merge(od, log, how = 'left', left_on = 'order_id', right_on = 'order_id')
    od1.head()

       merge는 가로, concat은 세로 방향으로 두 데이터프레임을 결합한다. left merge는 좌측 데이터프레임의 키를 기준으로 두 데이터프레임을 병합한다. 

      한편, cross merge는 두 데이터프레임의 모든 조합을 만들며 병합한다. 

    df.pivot_table(
        index = 'campaign',
        columns = 'week',
        values = 'ROAS'
    )

      ROAS 등 필요한 파생변수를 만들어 컬럼으로 만들어주고 해당 컬럼을 index와 컬럼으로 재구축하여 pivot table로 나타내는 것이 이 프로젝트의 핵심이라 할 수 있다.

     Campaign 1의 ROAS는 점차 하락하고 있는 반면 Campaign 2는 증가하고 있음을 알 수 있다. 


      다음 글에서는 데이터 시각화에 대해 공부할 것이다. 

    728x90
    반응형