본문 바로가기

데이터/데이터사이언스입문

2.3 큰 데이터 다루기

해당 글은 코드잇 강의를 참고하여 작성되었습니다.

- 큰 DataFrame 살펴보기

DataFrame명.head(개수) 위에서부터 개수만큼의 row를 보여줌
DataFrame명.tail(개수) 아래에서부터 개수만큼의 row를 보여줌
DataFrame명.shape 행열의 크기를 보여줌
DataFrame명.columns column을 보여줌
DataFrame명.info() column에 대한 정보를 보여줌
DataFrame명.describe() column의 통계 정보를 보여줌
DataFrame명.sort_values(by='column명', ascending=False)
 →inplace 사용해야 원래의 값도 변화
하나의 column을 기준으로 정렬(ascending 안쓰면 오름차순)

 

- 큰 Series 살펴보기

DataFrame명.['column명'].unique() 중복되지 않는 column 종류를 보여줌
DataFrame명.['column명'].value_counts() 해당 column이 총 몇 번 나왔는지를 보여줌
DataFrame명.['column명'].describe() column들의 정보를 보여줌

- 코드잇 대학교 : 강의실 배정하기

문제 : 
이전 과제에서 강의실 크기에 따라 “room assignment” column을 만들어 주었습니다.이제 이 “room assignment”에 따라 강의실 이름을 붙여주려고 합니다.아래 세 가지 조건을 만족하도록 코드를 작성하세요.같은 크기의 강의실이 필요한 과목에 대해 알파벳 순서대로 방 번호를 배정하세요. 예를 들어 Auditorium이 필요한 과목으로 “arts”, “commerce”, “science” 세 과목이 있다면, “arts”는 “Auditorium-1”, “commerce”는 “Auditorium-2”, “science”는 “Auditorium-3” 순서로 방 배정이 되어야 합니다.“status” column이 “not allowed”인 수강생은 “room assignment” column을 그대로 “not assigned”로 남겨둡니다.“room assignment” column의 이름을 “room number”로 바꿔주세요.
정답 :
import pandas as pd
df = pd.read_csv('data/enrolment_3.csv')

# 코드를 작성하세요.
# 과목별 인원 가져오기
allowed = df["status"] == "allowed"
course_counts = df.loc[allowed, "course name"].value_counts()

# 각 강의실 규모에 해당되는 과목 리스트 만들기
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)

# 강의실 이름 붙이기
for i in range(len(auditorium_list)):
    df.loc[(df["course name"] == sorted(auditorium_list)[i])  & allowed,"room assignment"] = "Auditorium-" + str(i+1)

for i in  range(len(large_room_list)):
    df.loc[(df["course name"] == sorted(large_room_list)[i])  & allowed,"room assignment"] = "Large-" + str(i+1)

for i in  range(len(medium_room_list)):
    df.loc[(df["course name"] == sorted(medium_room_list)[i])  & allowed,"room assignment"] = "Medium-" + str(i+1)

for i in  range(len(small_room_list)):
    df.loc[(df["course name"] == sorted(small_room_list)[i])  & allowed,"room assignment"] = "Small-" + str(i+1)

# column 이름 바꾸기
df.rename(columns={"room assignment" : "room number"}, inplace = True)

# 정답 출력
df​

 

'데이터 > 데이터사이언스입문' 카테고리의 다른 글

3.2 Seaborn 시각화  (0) 2021.07.09
3.1 시각화와 그래프  (0) 2021.07.09
2.2 데이터 변형하기  (0) 2021.07.07
2.1 DataFrame 인덱싱  (0) 2021.07.07
1.4 Pandas  (0) 2021.07.07