撰寫疊代器以分批載入資料(4)
在前面的練習中,你只處理了第一個 DataFrame 分批區塊的資料。這次,你會將資料集中所有 DataFrame 分批區塊的結果彙整起來。也就是說,你現在會處理整個資料集。這很實用,因為你能只操作較小的片段,就完成整個大型資料集的處理!
你將使用目前目錄中的 'ind_pop_data.csv'。pandas 與 matplotlib.pyplot 套件已分別以 pd 與 plt 匯入,供你使用。
本練習屬於課程
Python 工具箱
練習說明
- 使用
pd.DataFrame()初始化一個空的 DataFramedata。 - 在
for迴圈中疊代urb_pop_reader,以處理資料集中所有的 DataFrame 分批區塊。 - 透過將 DataFrame 組成清單傳入
pd.concat(),把data與df_pop_ceb串接起來。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Initialize reader object: urb_pop_reader
urb_pop_reader = pd.read_csv('ind_pop_data.csv', chunksize=1000)
# Initialize empty DataFrame: data
data = ____
# Iterate over each DataFrame chunk
for df_urb_pop in ____:
# Check out specific country: df_pop_ceb
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == 'CEB']
# Zip DataFrame columns of interest: pops
pops = zip(df_pop_ceb['Total Population'],
df_pop_ceb['Urban population (% of total)'])
# Turn zip object into list: pops_list
pops_list = list(pops)
# Use list comprehension to create new DataFrame column 'Total Urban Population'
df_pop_ceb['Total Urban Population'] = [int(tup[0] * tup[1] * 0.01) for tup in pops_list]
# Concatenate DataFrame chunk to the end of data: data
data = ____
# Plot urban population data
data.plot(kind='scatter', x='Year', y='Total Urban Population')
plt.show()