始める無料で始める

イテレータを使ってデータをチャンクで読み込む(3)

データをチャンクに分けて読み込み・処理する方法にも慣れてきたところで、さらに一歩進んで DataFrame に列を追加してみましょう。

前の演習のコードを出発点として、リスト内包表記 を使い、先ほど生成したタプルのリストから新しい列 'Total Urban Population' の値を作成します。前の演習で確認したとおり、各タプルの1つ目の要素と2つ目の要素はそれぞれ 'Total Population' 列と 'Urban population (% of total)' 列の値に対応しています。そのため、新しい列 'Total Urban Population' の値は、各タプルの1つ目の要素と2つ目の要素の積になります。また、2つ目の要素はパーセンテージなので、結果全体を 100 で割るか、0.01 を掛ける必要があります。

さらに、この新しい列のデータを使って都市人口データを可視化するグラフも作成します。

pandasmatplotlib.pyplot は、それぞれ pdplt としてインポート済みです。

この演習はコースの一部です

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()
コードを編集して実行