코딩 테스트/Pandas

Confirmation Rate

susinlee 2024. 12. 24. 10:03

[문제]

https://leetcode.com/problems/confirmation-rate/description/

 

 

[풀이]

1. 모든 user_id가 보여야 하므로 Signups 테이블을 기준으로 LEFT JOIN

2. action 열에서 confirmed인 행과 아닌 행들을 1과 0으로 나눠서 comfirmation_rate을 mean 함수로 손쉽게 구할 수 있음

3. user_id로 그룹화 해준뒤 mean과 round 함수 적용

 

Pandas

import pandas as pd

def confirmation_rate(signups: pd.DataFrame, confirmations: pd.DataFrame) -> pd.DataFrame:
    df = pd.merge(signups, confirmations, on='user_id', how='left')
    df['confirmation_rate'] = df['action'].apply(lambda x: 1 if x=='confirmed' else 0)
    return df.groupby('user_id', as_index=False)['confirmation_rate'].mean().round(2)

 

SQL

SELECT s.user_id
       , ROUND(AVG(IF(action='confirmed', 1, 0)), 2) as confirmation_rate
FROM Signups s
LEFT JOIN Confirmations c
    ON s.user_id = c.user_id
GROUP BY s.user_id

'코딩 테스트 > Pandas' 카테고리의 다른 글

Average Selling Price  (0) 2024.12.25
Not Boring Movies  (0) 2024.12.25
Managers with at Least 5 Direct Reports // agg()와 query()  (0) 2024.12.23
Students and Examinations  (0) 2024.12.22
Employee Bonus  (0) 2024.12.22