susinlee 님의 블로그

Game Play Analysis IV 본문

코드카타/Pandas

Game Play Analysis IV

susinlee 2025. 1. 1. 22:44

[문제]

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

 

 

[풀이]

1. player_id 별로 첫 로그인 날짜를 구하고

2. player_id 별로 로그인 날짜가 첫 로그인 날짜보다 하루 뒤인 행의 개수를 구한다

3. 전체 player_id 고유값으로 나눈다.

 

Pandas

def gameplay_analysis(activity: pd.DataFrame) -> pd.DataFrame:
    activity['first'] = activity.groupby('player_id').event_date.transform(min)
    activity_second = activity[activity['first'] + pd.DateOffset(1) == activity['event_date']]
    
    return pd.DataFrame({"fraction" : [round(len(activity_second)/activity.player_id.nunique(), 2)]})

 

- transform() 함수는 그룹화 전 데이터프레임의 행의 개수를 유지한 채로 전달한 함수를 적용해서 값을 채워넣는다.

- pd.DateOffset() 함수는 특정 간격만큼 날짜를 이동시키는 객체를 생성한다.

 

 

SQL

SELECT 
    ROUND(COUNT(player_id)/ (SELECT COUNT(DISTINCT player_id) FROM Activity), 2) AS fraction
FROM 
    Activity
WHERE 
    (player_id, DATE_SUB(event_date, INTERVAL 1 DAY)) IN (SELECT player_id, MIN(event_date)
                                                        FROM Activity
                                                        GROUP BY player_id)

'코드카타 > Pandas' 카테고리의 다른 글

101. Product Sales Analysis III  (0) 2025.01.06
100. User Activity for the Past 30 Days I  (0) 2025.01.05
Immediate Food Delivery II  (0) 2024.12.31
Monthly Transactions I  (0) 2024.12.30
Queries Quality and Percentage  (1) 2024.12.27