编写迭代器按块加载数据(3)
到现在为止,您已经习惯按块读取并处理数据了。接下来再进一步:给 DataFrame 添加一列。
从上一个练习的代码出发,您将使用列表推导式(list comprehension)从之前生成的元组列表创建新列 'Total Urban Population' 的取值。回忆上一练习:每个元组的第 1、2 个元素分别来自列 'Total Population' 和 'Urban population (% of total)'。因此,新列 'Total Urban Population' 中的值应为这两个元素的乘积。此外,由于第 2 个元素是百分比,您需要将整个结果除以 100,或等价地乘以 0.01。
您还将基于这列数据绘图,直观展示城镇人口数据。
已为您导入 pandas 和 matplotlib.pyplot,并分别命名为 pd 和 plt。
本练习是课程的一部分
Python 工具箱
练习说明
- 编写一个列表推导式,从
pops_list生成新列'Total Urban Population'的取值。输出表达式应为pops_list中每个元组的第 1 个和第 2 个元素的乘积。由于第 2 个元素是百分比,您需要将结果乘以0.01或除以100。另外,注意'Total Urban Population'列应为整数。为确保这一点,请用int()将输出表达式转换为整数。 - 创建一个散点图(scatter),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()