[Study]/[Pandas]

[LeetCode - Pandas] (Easy) 2356. Number of Unique Subjects Taught by Each Teacher

잰잰' 2025. 4. 3. 16:20
Table: Teacher
+-------------+------+
| Column Name | Type |
+-------------+------+
| teacher_id  | int  |
| subject_id  | int  |
| dept_id     | int  |
+-------------+------+

(subject_id, dept_id)은 이 테이블의 기본 키(고유한 값들의 조합)입니다.
이 테이블의 각 행은 teacher_id를 가진 교사가 dept_id 학과에서 subject_id 과목을 가르친다는 것을 나타냅니다.

 

대학에서 각 교사가 가르치는 고유한 과목의 수를 계산하는 솔루션을 작성하세요.

결과 테이블은 어떤 순서로든 반환할 수 있습니다.

결과 형식은 다음 예시와 같습니다.

 

Example 1:

Input: 
Teacher table:
+------------+------------+---------+
| teacher_id | subject_id | dept_id |
+------------+------------+---------+
| 1          | 2          | 3       |
| 1          | 2          | 4       |
| 1          | 3          | 3       |
| 2          | 1          | 1       |
| 2          | 2          | 1       |
| 2          | 3          | 1       |
| 2          | 4          | 1       |
+------------+------------+---------+
Output:  
+------------+-----+
| teacher_id | cnt |
+------------+-----+
| 1          | 2   |
| 2          | 4   |
+------------+-----+

설명:
교사 1:

- 교사 1은 3번과 4번 학과에서 2번 과목을 가르칩니다.

- 교사 1은 3번 학과에서 3번 과목을 가르칩니다.

교사 2:

- 교사 2는 1번 학과에서 1번 과목을 가르칩니다.

- 교사 2는 1번 학과에서 2번 과목을 가르칩니다.

- 교사 2는 1번 학과에서 3번 과목을 가르칩니다.

- 교사 2는 1번 학과에서 4번 과목을 가르칩니다.

 

✏️ 풀이

import pandas as pd

def count_unique_subjects(teacher: pd.DataFrame) -> pd.DataFrame:
    return teacher.groupby('teacher_id')['subject_id'].nunique().reset_index(name='cnt')

 

📚 개념정리

nunique() ? 데이터 고유값들의 수를 출력해주는 메서드

df['{컬럼명}'].nunique(axis=0, dropna=True)

- axis : 기준이 되는 축

- dropna : 결측치 무시 여부

   + unique() ? 데이터 고유값들을 출력해주는 메서드

   + value_counts() ? 값 별로 데이터의 수를 출력해주는 메서드

reset_index() ? 설정 인덱스를 제거하고 기본 인덱스로 변경하는 메서드