イテレータを使ってデータをチャンクで読み込む(3)
データをチャンクに分けて読み込み・処理する方法にも慣れてきたところで、さらに一歩進んで DataFrame に列を追加してみましょう。
前の演習のコードを出発点として、リスト内包表記 を使い、先ほど生成したタプルのリストから新しい列 'Total Urban Population' の値を作成します。前の演習で確認したとおり、各タプルの1つ目の要素と2つ目の要素はそれぞれ 'Total Population' 列と 'Urban population (% of total)' 列の値に対応しています。そのため、新しい列 'Total Urban Population' の値は、各タプルの1つ目の要素と2つ目の要素の積になります。また、2つ目の要素はパーセンテージなので、結果全体を 100 で割るか、0.01 を掛ける必要があります。
さらに、この新しい列のデータを使って都市人口データを可視化するグラフも作成します。
pandas と matplotlib.pyplot は、それぞれ pd と plt としてインポート済みです。
この演習はコースの一部です
Python Toolbox
演習の手順
pops_listから新しい列'Total Urban Population'の値のリストを生成するリスト内包表記を書きましょう。出力式 は、pops_listの各タプルの1つ目の要素と2つ目の要素の積にします。第2要素はパーセンテージなので、結果に0.01を掛けるか100で割る必要があります。また、列'Total Urban Population'には整数値のみを格納できるようにするため、出力式 をint()で整数にキャストしてください。- x 軸を
'Year'列の値、y 軸を'Total Urban Population'列の値とした 散布図 を作成しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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()