청크 단위로 데이터를 불러오는 이터레이터 작성하기 (3)
이제 데이터를 청크 단위로 읽고 처리하는 데 익숙해지셨을 거예요. 이번에는 DataFrame에 열을 하나 추가하며 실력을 한 단계 더 끌어올려 보겠습니다.
이전 연습 문제의 코드를 바탕으로, 앞에서 생성한 튜플 리스트를 사용해 새 열 'Total Urban Population'의 값을 만드는 리스트 컴프리헨션을 작성할 거예요. 이전 연습 문제에서 각 튜플의 첫 번째와 두 번째 원소는 각각 'Total Population'과 'Urban population (% of total)' 열의 값으로 구성되어 있었죠. 따라서 새 열 'Total Urban Population'의 값은 각 튜플의 첫 번째 원소와 두 번째 원소의 곱이 됩니다. 또한 두 번째 원소는 퍼센트이므로 결과 전체를 100으로 나누거나, 또는 0.01을 곱해야 합니다.
이 새 열의 데이터를 이용해 도시 인구 데이터를 시각화하는 플롯도 그려 보겠습니다.
pandas와 matplotlib.pyplot 패키지는 각각 pd, plt로 이미 임포트되어 있어요.
이 연습은 강의의 일부입니다
Python 도구 상자
연습 안내
pops_list에서 새 열'Total Urban Population'을 위한 값 리스트를 생성하는 리스트 컴프리헨션을 작성하세요. 출력 식은pops_list의 각 튜플에서 첫 번째 원소와 두 번째 원소의 곱이어야 합니다. 두 번째 원소는 퍼센트이므로 결과에0.01을 곱하거나100으로 나눠야 합니다. 또한'Total Urban Population'열은 정수만 가져야 하므로,int()로 출력 식을 정수로 캐스팅하세요.- x축은
'Year'열, y축은'Total Urban Population'열의 값을 사용해 산점도(scatter) 플롯을 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Code from previous exercise
urb_pop_reader = pd.read_csv('ind_pop_data.csv', chunksize=1000)
df_urb_pop = next(urb_pop_reader)
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == 'CEB']
pops = zip(df_pop_ceb['Total Population'],
df_pop_ceb['Urban population (% of total)'])
pops_list = list(pops)
# Use list comprehension to create new DataFrame column 'Total Urban Population'
df_pop_ceb['Total Urban Population'] = [____]
# Plot urban population data
df_pop_ceb.plot(kind=____, x=____, y=____)
plt.show()