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() ? 설정 인덱스를 제거하고 기본 인덱스로 변경하는 메서드