내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day37_240607

단ee 2024. 6. 10. 12:41

학습 내용


  1. 파이썬 기초 위키독스 공부하기(~120번)

    • 패킹과 언패킹 : 리스트나 튜플에 값을 넣는 것을 패킹, 묶여있는 값을 풀어내는 것을 언패킹이라고 한다.

      • 즉, 하나 이상의 값을 리스트/튜플에 넣는(묶는) 것 = 패킹

      • 리스트/튜플에 저장된 값을 꺼내는(푸는) 것 = 언패킹

        Python
        scores = [8.8, 8.9, 9.4]
          # score 라는 변수에 데이터를 리스트로 패킹하기
        score1, score2, score3 = scores
          # score 를 score1, score2, score3 으로 언패킹하기
          # 언패킹하는 좌변과 우변의 리스트/튜플 내 데이터 개수가 일치해야 한다.
          # 단, star sxpression(*)을 사용하면 좌변과 우변의 데이터 개수가 일치하지 않아도 된다.
        
        scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
          # score 라는 변수에 데이터 패킹하기
        score1, score2, *others = scores
          # score1 = 8.8, score2 = 8.9, scores[2] 부터는 리스트 형태로 others에 할당된다.
    • 딕셔너리 관련 메서드

      • .keys() : 딕셔너리의 key를 출력할 수 있다.

      • .values() : 딕셔너리의 value를 출력할 수 있다.

      • 딕셔너리는 key를 사용하여 key에 저장된 value를 호출할 수 있다.

          Python
          ice = {'메로나': 1000,
                 '폴로포': 1200,
                 '빵빠레': 1800,
                 '죠스바': 1200,
                 '월드콘': 1500}
        
          print(ice['메로나'])
              # 이렇게 호출하면 메로나의 가격인 1000 이 출력된다.
  2. SQL 챌린지 세션 : 누적합계와 이동합계 구하기

    • 누적 합계 : 기준 행까지 전부 더한 값. | ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    • 이동 합계 : 범위를 이동해가며 더한 값. | ROWS BETWEEN 11 PRECEDING AND CURRENT ROW
    • 예를 들어, 현재 시점은 2024년 6월이고, 2024년의 누적 합계와 이동 합계를 계산한다고 하면;
      1. 6월의 누적 합계는 2024년 1월 ~ 2024년 6월까지 매출을 전부 합한 값
      2. 기준에 따라 다르지만, 해당 월과 직전 11개월의 매출액 합계라고 한다면
        • 5월의 이동 합계는 2023년 6월 ~ 2024년 5월 매출액 합계 | 6월의 이동 합계는 2023년 7월 ~ 2024년 6월 매출액 합계
    • MySQL 쿼리문 예시
        SQL
        SELECT 
            Country
            ,DATE_FORMAT(c_date, '%Y-%m') AS dt_month
            ,SUM(Price * Quantity) AS monthly_sales
            ,ROUND(
                SUM(SUM(Price * Quantity)) OVER (PARTITION BY Country ORDER BY DATE_FORMAT(c_date, '%Y-%m') 
                                ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
            , 2) AS country_cumsum   -- 누적 합계
            , ROUND(
                SUM(SUM(Price * Quantity)) OVER (PARTITION BY Country ORDER BY DATE_FORMAT(c_date, '%Y-%m') 
                                ROWS BETWEEN 11 PRECEDING AND CURRENT ROW)
            , 2) AS moving_cumsum    -- 이동 합계
        FROM
            (
            SELECT *
                ,STR_TO_DATE(Date, "%m/%d/%Y") AS c_date
            FROM sales_transaction_keggle
            ) AS sales
        WHERE Country IN ('Australia', 'Italy')
        GROUP BY 1, 2

고찰 & 기타


  • 머신러닝 강의를 심화편과 기초편 두 개 지급 받았는데, 이번 주 내내 심화 강의를 기초인 줄 알고 듣고 있었다.
    어쩐지 어렵고 진도도 안 나가더라.....
  • 프로젝트 팀의 다른 분과 함께 과제로 받았던 SQL 문제 쿼리 리뷰를 했는데, 역시 나 혼자 풀 때 보다는 다른 사람이랑 쿼리 비교해보는 게 실력 향상에는 좋은 것 같다.
  • 예전에 일할 때는 엑셀로 계산했던 매출 누적 합계와 이동 합계를 SQL 쿼리문으로 작성해보니 낯설면서도 익숙하게 느껴졌다.

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day48_240624  (0) 2024.06.24
[TIL] camp_day39_240611  (0) 2024.06.11
[TIL] camp_day36_240605  (0) 2024.06.05
[TIL] camp_day35_240604  (0) 2024.06.04
[TIL] camp_day34_240603  (0) 2024.06.04