inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

6회 작업형 1-2 교사수 문제

154

작성자 없음

0

  1. 학교에서 교사 한 명당 맡은 학생 수가 가장 많은 학교를 찾고, 그 학교의 전체 교사 수를 구하시오. (정수 출력)

import pandas as pd

df = pd.read_csv('data6-1-2.csv')

df['전체'] = df.iloc[:, 2:].sum(axis=1)

df['전체/교사'] = df['전체'] / df['교사수']

여기까지는 했는데

 

여기서 학교 한 명당 맡은 학생수 즉, 전체/교사수가 가장 많은 학교를 찾아야하는데

 

학교명을 groupby로 해서 푸는 코드가 어떻게 되나요,,?

 

풀이는 idxmax로 했는데,, groupby로 풀고싶어요!

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

그룹별로 최댓값을 찾기 위해 groupby를 사용하는 방법을 안내해드리겠습니다.

처음에는 학교별로 데이터를 그룹화한 뒤 ‘전체/교사’ 칼럼의 최대값을 찾는 방법으로 접근할 수 있습니다. 하지만, 여기서는 이미 각 학교의 데이터가 합산되어 ‘교사수’와 ‘전체/교사’ 값이 주어지므로 groupby는 필요하지 않습니다.

그럼에도 groupby를 사용하고 싶으시다면 ‘학교명’ 칼럼을 기준으로 한 번만 그룹화하고 그룹 내 최댓값을 찾을 수 있겠지만, 이 경우 각 학교마다 하나의 데이터만 존재하기 때문에 별도의 집계 없이 그룹별 최댓값은 각 학교의 해당 값과 동일하게 됩니다.

따라서 가장 많은 ‘전체/교사’ 값을 가진 행을 직접 찾아야 합니다. 그러나 이미 진행하신 idxmax 메소드를 사용하는 것이 적절합니다. 가장 많은 학생을 맡은 교사 비율을 가진 학교와 교사 수를 찾기 위한 예제 코드는 다음과 같습니다.

# '전체/교사' 가장 큰 값을 가진 행의 인덱스를 찾습니다.
max_ratio_index = df['전체/교사'].idxmax()

# idxmax로 찾은 인덱스를 사용하여 학교명을 얻습니다.
school_with_max_ratio = df.loc[max_ratio_index, '학교명']

# 가장 큰 비율을 가진 학교의 교사 수를 찾습니다.
num_teachers = df.loc[max_ratio_index, '교사수']

# 결과 출력
print(f'학생-교사 비율이 가장 큰 학교: {school_with_max_ratio}')
print(f'{school_with_max_ratio}의 교사 수: {num_teachers}')

이 코드는 ‘전체/교사’의 최댓값을 가진 학교의 이름과 해당 학교의 교사 수를 출력합니다. groupby를 사용하여 해결하는 것보다 이미 제공된 데이터와 idxmax를 적절히 활용하는 방법이 코드를 간결하고 효율적으로 만든다는 점을 이해해 주시면 좋겠습니다.

강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.

2

47

1

시스템 아키텍처를 강의에 나온 것 처럼 그리고 싶은데 공유 가능할까요?

1

48

2

포트폴리오에 대한 질문이 있습니다!

1

46

2

7회 3유형 2번문제 질문

1

27

2