[문제]

https://leetcode.com/problems/queries-quality-and-percentage/description/

 

 

[풀이]

1. rating 컬럼과 position 컬럼을 나눈 새로운 컬럼을 생성한다. 

2. rating 컬럼이 3 미만인 조건을 통해 불리언 배열을 생성하고 이에 100을 곱해주는 새로운 컬럼을 생성한다. (비율이므로 미리 계산)

3. query_name으로 그룹화한 뒤 두 컬럼을 평균해준다. 반올림도 진행해주는데 아마 틀렸다고 나올 것이다.

4. 이는 판다스의 반올림에는 다른 규칙이 있기 때문인데, 예를들어 소수점 둘째짜리까지 반올림하는 경우 반올림할 숫자가 0.125라면 0.12로 반올림한다. 이는 편향을 줄이기 위한 방법인데 반올림할 값이 딱 중간인 5라면 가까운 짝수로 반올림한다. 그래서 이를 보정해주기 위해 아주 작은 값을 더해줘서 짝수가 아닌 일반적인 방식으로 반올림이 수행되도록 해준다.

 

Pandas

import pandas as pd

def queries_stats(queries: pd.DataFrame) -> pd.DataFrame:
    queries['quality'] = queries.rating / queries.position + 10e-9
    queries['poor_query_percentage'] = (queries.rating < 3) * 100
    return queries.groupby('query_name', as_index=False)[['quality', 'poor_query_percentage']].mean().round(2)

 

SQL

SELECT 
    query_name
    , ROUND(AVG(rating / position), 2) AS quality
    , ROUND(AVG(IF(rating < 3, 1, 0)) * 100, 2) AS poor_query_percentage
FROM Queries 
GROUP BY query_name

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

Immediate Food Delivery II  (0) 2024.12.31
Monthly Transactions I  (0) 2024.12.30
Percentage of Users Attended a Contest  (0) 2024.12.26
Project Employees I  (0) 2024.12.26
Average Selling Price  (0) 2024.12.25

+ Recent posts