Daily plan
🌞오전
- 데이터분석 입문 주차 발제
- SQL/python 과제 해설 세션
🔥 오후
- 빅분기 발등에 불떨어짐
- 통계 강의 1주차
- SQL 과제 정리
- 코드카타 SQL 85, 86, 87
🌝 저녁
- python 과제 문제 풀이
- 스크럼 작성 + TIL 제출
SQL 과제
use assignments;
문제1
select ad_id, round(100*click_cnt/imp_cnt,2) ctr
from (select ad_id,
count(case when event_type='click' then 1 end) as click_cnt,
count(case when event_type='impression' then 1 end) as imp_cnt
from ad_events
where event_time like '2022%'
group by ad_id
) as a
order by ad_id
- 이렇게 서브쿼리를 넣는 것 보다 select문에서 바로 ctr을 계산하는 게 나을 것 같음
- 대신 보기 좋게 줄바꿈 잘하기!
select ad_id,
round(
count(case when event_type='click' then 1 end)
/ count(case when event_type='impression' then 1 end)
*100
,2) as ctr
from ad_events
where event_time like '2022%'
group by ad_id
order by ad_id
문제2
select customer_id
from customer_orders c
join products p
on c.product_id = p.product_id
group by customer_id
having count(distinct product_category)=3
from products
order by customer_id
- 전체 카테고리의 고유 수가 몇인지부터 확인하기
select count(distinct product_category)
from products
문제3
- 윈도우 함수 avg() over(rows between 2 preceding and current row)
select user_id,
post_date,
round(avg(post_count) over(
partition by user_id
order by user_id
rows between 2 preceding and current row
)
,2) as rolling_avg_3d
from blog_posts
order by user_id, post_date
문제 4
강의) 통계학 기초 1주차
데이터 분석에서 통계가 중요한 이유
- 데이터 이해, 해석, 요약, 패턴 찾기 등에 중요한 역할
- 추론을 통해 결론 도출하는 과정에 필요
- 데이터 기반 의사결정을 도움 -> 보다 현명한 결정을 내리고 수익을 창출
- 데이터 분석에서 통계가 사용되는 예시
- 고객 만족도 설문조사 분석
- 고객 유형별 세그먼트 상품 추천
- 기업 전략 수립, 마케팅 진행, 신제품 개발 등
기술통계와 추론통계
-
기술 통계
: 데이터를 요약하고 설명하는 통계 방법 (평균, 중앙값, 분산, 표준편차 등)
- 평균: 데이터의 일반적인 경향 파악에 유용
- 중앙값: 이상치의 영향을 덜 받는 특징
- 분산: 값들이 평균에서 얼마나 떨어져 있는지
- 각 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나눔
- 표준편차: 값들이 평균에서 얼마나 떨어져 있는지 (분산의 제곱근)
- 분산과 동일하게 데이터의 변동성을 측정하는 척도
- 분산은 제곱 단위로 표현되지만, 표준편차는 다시 제곱근을 취하여 원래 데이터 값과 동일한 단위로 변환됨
-
추론 통계
: 표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계 방법 (신뢰구간, 가설검정 등) -> 데이터의 일부로 전체를 추정하는 것이 핵심
- 신뢰구간
- 모집단의 평균이 특정 범위 내에 있을 것이라는 확률
- 일반적으로 95% 신뢰구간이 사용됨
- 가설검정
- 모집단에 대한 가설 검증을 위해 사용
- 귀무가설(H0): 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설 (변화없다, 효과없다)
- 대립가설(H1): 귀무가설과 반대로, 주장하는 바를 나타냄 (변화가 있다, 효과가 있다)
- p-value로 귀무가설의 기각 여부를 결정함
다양한 분석 방법
- 위치 추정: 데이터의 중심을 확인
- 변이 추정: 데이터들이 서로 얼마나 다른지 확인
- 분산, 표준편차, 범위(range) 등
- 범위: 데이터셋에서 가장 큰 값과 가장 작은 값의 차이를 나타내는 간단한 분포의 측도로, 데이터가 어느 정도의 변동성을 가지는지 쉽게 파악 가능 (최댓값-최솟값)
- 데이터 분포 탐색: 데이터 값들이 어떻게 이루어져 있는지 확인
- 이진 데이터와 범주 데이터 탐색: 데이터들이 서로 얼마나 다른지 확인
- 최빈값을 주로 사용
- 파이그림, 막대 그래프 등
- 상관관계: 데이터들끼리 서로 관련이 있는지 확인
- 두 변수 간의 관계를 측정하는 방법
- 상관계수를 계산해서 -1이나 1에 가까워질수록 강한 상관관계를 가짐
- 0에 가까울수록 상관관계가 없음
- 0.4정도부터는 상관관계가 있다고 판단할 수 있는 수치 (예시에서 상관계수가 0.36인 경우가 있었는데, 강사님은 이정도면 애매하다고 했다. 통찰력을 가지고 변수간에 관계가 있는지 자세히 파악해봐야할 정도라고..! 지난 프로젝트에서 상관분석했을 때 0.4~0.6정도의 변수들을 유의미하다고 판단 가능한지 의문이었는데 그정도면 상관관계가 있다고 봐도 될 것 같아서 다행,,)
- 상관관계는 두 변수 간의 관계를 나타내고, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타냄
- 두 개 이상의 변수 탐색: 여러 데이터들끼리 서로 관련이 있는지 확인
- 다변량 분석
- ex) 여러 마케팅 채널의 광고비와 매출 간의 관계 분석
SQL
Window function - row의 조건(범위) 지정하는 방법
-
ROWS: 현재 ROW 위치에서 물리적인 범위
-
RANGE: 현재 ROW값을 기준으로 논리적인 범위
- ROWS UNBOUNDED PRECEDING: 현재 행과 현재 행 위에 있는 모든 행들을 함수에 사용하라는 의미
- RANGE UNBOUNDED PRECEDING: 현재 행의 값을 기준으로 이하의 값을 함수에 사용하라는 의미
- ROWS N(숫자) PRECEDING: 현재 행과 바로 위의 행 N개의 값을 함수에 사용하라는 의미
- ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
- RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
- ROWS BETWEEN N PRECEDING AND CURRENT ROW
-
BETWEEN은 윈도우의 시작과 끝 위치를 지정하는 것으로 생략 가능함
- CURRENT ROW: 현재 행을 끝 위치로 지정
- 현재 행이 아닌 맨 마지막 행을 끝 위치로 표현하고 싶다면 AND 뒤에 UNBOUNDED FOLLOWING을 사용하면 됨
- N PRECEDING절처럼 N FOLLOWING으로 현재 행을 기준으로 끝 위치를 N개만큼 지정할 수 있음
Window function - LAG, LEAD
- LAG: 현재 행의 이전 행 값을 참조
- LEAD: 현재 행의 다음 행 값을 참조
일기
새로운 조를 만났다.
이번주 토요일에 빅분기 시험인데 큰일났다.
진짜 큰일남. 저번 ADsP때 보다 더 큰일남.
떨어지면 저랑 같이 9월에 또 보면되죠 ㅎㅎ 파이팅~