세조목

TIL(Today I Learned)64일차(24.02.11) 본문

데이터 분석 공부/TIL(Today I Learned)

TIL(Today I Learned)64일차(24.02.11)

세조목 2024. 2. 11. 22:07

SQLD(2회차 학습 - 2주차)

 

심화 프로젝트

2024.02.11 - [데이터 분석 공부/프로젝트] - 심화 프로젝트 6일차(방문 주차에따른 코호트 & 코호트별 weekly 리텐션 구하기)(24.02.11)

 

심화 프로젝트 6일차(방문 주차에따른 코호트 & 코호트별 weekly 리텐션 구하기)(24.02.11)

1. 코호트 분석에 필요한 컬럼들로 구성된 데이터프레임 만들기 df = train_df2[['date_week', 'fullVisitorId']] 2. 고객ID('fullVisitorId')를 인덱스로 지정하기 df.set_index('fullVisitorId', inplace=True) # set_index('fullVisit

eyeoftheworld1209.tistory.com

 

SQL, PYTHON 예제 복습

PYTHON

1. 나누어 떨어지는 숫자 배열

https://school.programmers.co.kr/learn/courses/30/lessons/12910

def solution(arr, divisor):
    answer = []
    for i in range(len(arr)):
        if arr[i] % divisor == 0:
            answer.append(arr[i])
        else:
            pass
    if len(answer) != 0:
        answer.sort()
    else:
        answer.append(-1)
    return answer

 

2. 음양 더하기

https://school.programmers.co.kr/learn/courses/30/lessons/76501

def solution(absolutes, signs):
    answer = 0
    for i in range(len(absolutes)):
        if signs[i] == True:
            val_plus = absolutes[i] * 1
            answer+=val_plus
        else:
            val_minus = absolutes[i] * -1
            answer+=val_minus
    return answer

 

3. 핸드폰 번호 가리기

https://school.programmers.co.kr/learn/courses/30/lessons/12948

def solution(phone_number):
    answer = []
    num_list = list(phone_number)
    cnt = len(num_list)-4
    val1 = cnt * '*'
    answer.append(val1)
    for i in range(-1,-5,-1):
        val2 = num_list[i]
        answer.append(val2)    
    answer2 = ''.join(answer)
    return answer2

 

SQL( 550. Game Play Analysis IV)

https://leetcode.com/problems/game-play-analysis-iv/

WITH FIRST AS(
SELECT PLAYER_ID, DEVICE_ID, MIN(EVENT_DATE) EVENT_DATE, GAMES_PLAYED
FROM ACTIVITY
GROUP BY PLAYER_ID
)
SELECT ROUND(COUNT(*) / (SELECT COUNT(DISTINCT PLAYER_ID) FROM FIRST), 2) FRACTION
FROM FIRST FI RIGHT JOIN ACTIVITY AC ON FI.PLAYER_ID = AC.PLAYER_ID
WHERE DATEDIFF(AC.EVENT_DATE, FI.EVENT_DATE) = 1