[TIL] Day 18, 19, 20, 21, 22 - SQL, EDA, 통계
⛺ 𝗕𝗼𝗼𝘁 𝗖𝗮𝗺𝗽/멋쟁이사자처럼 AI 스쿨 6기

[TIL] Day 18, 19, 20, 21, 22 - SQL, EDA, 통계

5일이나 밀려서 제목 터져나가는거 개웃기다 멋진 과거의 나

 

 

 18일차 

SQL

  • OUTER JOIN
    • LEFT JOIN
    • RIGHT JOIN
    • 보통 하나의 조인만을 많이 사용
  • INNER JOIN
    • SELECT * FROM a INNTER JOIN b ON a.id = b.id
  • SELF JOIN
    • 자기자신에게 조인하는 것
  • 특정 시간을 기준으로 더하거나, 빼기
    • DATE_ADD(기준날짜, INTERVAL)
      • DATE_ADD(NOW(), INTERVAL 1 MINUTE) -> 1분 더하기
      • DATE_ADD(NOW(), INTERVAL -1 DAY) -> 하루 빼기
    • DATE_SUB(기준날짜, INTERVAL)
  • UNION
    • 좌우로 붙이는 것은 JOIN 이라고 하면, UNION은 상하로 붙이는 것
    • UNION을 통해서 중복을 제거할 수 있다.
    • 1 - 2, 2 - 3 있으면 -> 1 - 2 - 3
  • UNION ALL
    • 중복 포함하여 전부 다 보여주기
    • 1 - 2, 2 - 3 있으면 -> 1 - 2 - 2 - 3
  • 대칭 차집합 느낌으로 보고 싶으면 LEFT, RIGHT 해서 UNION
  • 개발자로서 비즈니스 가치를 제공할 줄 알 것 -> 매출 분석..
  • PU : Paying User
  • ARPPU : Average Revenue Per Paying User
  • Funnel Analysis 퍼널 분석
    • 유저 경험 루트 따라가기
    • 유저의 이탈과 도착
    • Conversion Rate 전환율
  • 퍼널의 단계 최소화, 전환율 높이기

 

 

 

 19일차 

Tidy Data

  • 분석하기 좋은 깔끔한 데이터란?
  • pd.melt(df, id_vars, var_name, value_name)
    • 열에 있는 데이터를 행으로 녹이기
    • 열로 가지고 있던 데이터들을 하나의 변수로 내리면 깔끔하게 변한다.
    • 단위까지 맞출 것
    • id_vars 로 기준이 될 값을 잡는다.
    • 열로 있던 것들이 가로로 남게 되고 옆에 관측치가 오게 된다.
  • Tidy Data
    • 변수가 열
    • 관측치가 행
  • point 는 범주형
  • line 은 수치형

 

 

 

 20일차 

EDA

  • df.rename(columns={}) 으로 컬럼명 변경하기
  • df.str.replace, df.replace 로 컬럼 내용 한번에 변경하기
  • df.nunique() 로 고유값 개수 확인
  • df.columns.to_list() 로 컬럼명 리스트로 변경하기
  • df.values 로 시리즈의 데이터 얻어오기
  • df[].str 을 사용하면 시리즈에 문자열 함수 적용이 가능하다.
  • sns.countplot() 으로 빈도수 시각화
  • df[df[]조건, 열].value_counts() 로 일부 데이터 빈도수 확인하기
    • 여기에 plot.barh() 등 시각화 적용 가능
  • df 저장할 때 df[].copy() 사용
  • sns.catplot() 을 이용하여 여러 가지 그래프 적용하기
  • pd.pivot_table(data, index, columns, aggfunc, values, fill_value)
  • 대용량 데이터 다루기
    • 샘플링 해서 가져오기
    • df[].unique() 를 이용하여 샘플링 pool 구하기
    • np.random.choice(pool, n)
    • df[].sample(n, random_state=42).tolist()
      • 리스트 변경
      • random_state 는 seed
    • df[df[].isin(sample_list)].copy()
    • 그리고 저장해서 사용
  • pd.to_datetime(df[]) 으로 datetime 자료형으로 변경해서 사용
    • 뽑아쓸때는 df[].dt.month 이런식으로
    • df[].dt.day_name() 으로 요일을 영문문자열로
  • 리스트 컴프리핸션을 사용하여 딕셔너리 만들기
    • a = { c[0] : c[1] for c in city }
  • df[].map(dictionary) 로 시도코드 시도명으로 바로 변경하기
  • np.triu(m, k) 이용하여 상삼각행렬 만들기
    • k를 기준으로 대각선 아래는 0으로 채워져있다.
  • np.ones_like(a) 를 이용하여 a 리스트 크기 만큼의 1로 채워진 행렬 만들기
  • sns.heatmap(df, annot, cmap, vmin, vmax, mask, fmt)
    • annot = True 하면 숫자 표현 가능
    • mask 를 이용하면 0인 부분만 표현된다.

 

 

 

 21일차 

모듈화

  • 모듈화를 할 때 생각해야하는 점
  • 코드 함수 사이의 의존성 관계 & 추상화 정도
  • 모듈에 담긴 코드의 실행 순서
    • 코드는 위에서 아래로 읽는다.
    • 읽는 것과 실행이 되는 것은 다른 문제
    • 에러는 실행하는 순간에 나게 된다.
    • 변수와 함수는 메모리에 할당이 된다.
  • 정보 은닉
    • 감춰줘도 되는 함수는 앞에 _ 붙이기
    • 모듈을 읽기도, 재활용성도 높아진다.
  • 파이썬에서 실행 순서와 구조적 프로그래밍
    • 순차
      • 위 -> 아래
      • 함수 호출과 스택
    • 반복
    • 선택
  • 주피터에서 ! 붙이면 리눅스 명령어 사용 가능
    • !ls -al
  • from importlib import reload 를 이용하여 강제로 모듈 로드하기
    • import food
    • food = reload(food)

 

 

 

 22일차 

통계

  • 데이터란 패턴과 노이즈의 합작
  • 데이터란 감각으로 주어지는 것이기 때문에 측정에 불완정성이 있다.
  • 따라서 통계에는 맞다 틀리다의 개념으로 접근하면 안된다.
  • 통계학과 머신러닝의 차이점은 크게 없지만, 통계학은 모형의 타당성에 머신러닝은 예측 성능에 좀 더 관심을 기울이는 경향을 띠고 있다.
  • 모집단이란 ? 연구의 관심이 되는 집단 전체
  • 표본이란 ? 특정 연구에서 선택된 모집단의 부분집합
    • 표본을 보는 이유는 모집단 전체를 조사하면 비용과 시간이 많이 들기 때문에
    • 표본을 이용해서 모집단을 어림잡아 보기 위한 것이다.
  • 기술통계란 ? 표본을 요약하고 묘사한다.
    • 중심 경향치, 분위수, 변산성 측정치
    • 변산성이란 데이터가 어떻게 퍼져있는가를 이른다.
  • 추론통계란 ? 표본을 통해 모집단에 대해 추측한다.
  • 회귀분석이란 ? 독립변수를 이용하여 종속변수를 예측하는 것

 

 

 

 회고 

통계는 어려워요. 특히 용어가 어려운 것 같아요. 보면 어쩌라고 싶습니다..

고딩 때도 확통 싫어했다구요.. 흑흑.. 그래도 공부해야겠죠...

그나저나 미뤄뒀던 TIL 쓰고 멍때리거나 놓쳤던 수업 복습해서 마음이 홀가분합니다

휴일까지 말끔하게 쉬고 다시 꾸준히 할 것 🐎

 

 

 

 


728x90