import pandas as pd
df = pd.read_csv('data/enrolment_2.csv')
# 여기에 코드를 작성하세요
df['room assignment']='Auditorium'
allowed = df['status']=='allowed'
course_counts=df.loc[allowed, 'course name'].value_counts()
course_counts
big=list(course_counts[course_counts>=80].index)
for course in big:
df.loc[df['course name']==course,'room assignment']='Auditorium'
large=list(course_counts[(course_counts>=40)&(course_counts<80)].index)
for course in large:
df.loc[df['course name']==course,'room assignment']='Large room'
mid=list(course_counts[(course_counts>=15)&(course_counts<40)].index)
for course in mid:
df.loc[df['course name']==course,'room assignment']='Medium room'
small=list(course_counts[(course_counts>=5)&(course_counts<15)].index)
for course in small:
df.loc[df['course name']==course,'room assignment']='Small room'
not_allowed = df['status']=='not allowed'
df.loc[not_allowed,'room assignment']='not assigned'
# # 테스트 코드
df
해설
수강 인원에 따라 총 다섯 개의 조건
- 80명 이상의 학생이 수강하는 과목은 “Auditorium”
- 40명 이상, 80명 미만의 학생이 수강하는 과목은 “Large room”
- 15명 이상, 40명 미만의 학생이 수강하는 과목은 “Medium room”
- 5명 이상, 15명 미만의 학생이 수강하는 과목은 “Small room”
- 폐강 등의 이유로 status가 “not allowed”인 수강생은 room assignment 또한 “not assigned”
status가 "allowed"인 course들에 대해서 수강 인원
import pandas as pd
df = pd.read_csv('data/enrolment_2.csv')
# 과목별 인원 가져오기
allowed = df["status"] == "allowed"
course_counts = df.loc[allowed, "course name"].value_counts()
course_counts
arts 158
science 124
commerce 101
english 56
...
mca 5
interior design 5
building construction and mangement 5
nanotechnology 5
Name: course name, Length: 82, dtype: int64
# 각 강의실 규모에 해당되는 과목 리스트 만들기
auditorium_list = list(course_counts[course_counts >= 80].index)
large_room_list = list(course_counts[(80 > course_counts) & (course_counts >= 40)].index)
medium_room_list = list(course_counts[(40 > course_counts) & (course_counts >= 15)].index)
small_room_list = list(course_counts[(15 > course_counts) & (course_counts > 4)].index)
# not allowed 과목에 대해 값 지정해주기
not_allowed = df["status"] == "not allowed"
df.loc[not_allowed, "room assignment"] = "not assigned"
# allowed 과목에 대해 값 지정해주기
for course in auditorium_list:
df.loc[(df["course name"] == course) & allowed, "room assignment"] = "Auditorium"
for course in large_room_list:
df.loc[(df["course name"] == course) & allowed, "room assignment"] = "Large room"
for course in medium_room_list:
df.loc[(df["course name"] == course) & allowed, "room assignment"] = "Medium room"
for course in small_room_list:
df.loc[(df["course name"] == course) & allowed, "room assignment"] = "Small room"