开始使用免费开始使用

编写迭代器按块加载数据(3)

到现在为止,您已经习惯按块读取并处理数据了。接下来再进一步:给 DataFrame 添加一列。

从上一个练习的代码出发,您将使用列表推导式(list comprehension)从之前生成的元组列表创建新列 'Total Urban Population' 的取值。回忆上一练习:每个元组的第 1、2 个元素分别来自列 'Total Population''Urban population (% of total)'。因此,新列 'Total Urban Population' 中的值应为这两个元素的乘积。此外,由于第 2 个元素是百分比,您需要将整个结果除以 100,或等价地乘以 0.01

您还将基于这列数据绘图,直观展示城镇人口数据。

已为您导入 pandasmatplotlib.pyplot,并分别命名为 pdplt

本练习是课程的一部分

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()
编辑并运行代码