Menulis iterator untuk memuat data per bagian (5)
Ini adalah tahap terakhir. Anda telah mempelajari banyak hal tentang memproses himpunan data besar secara bertahap (per bagian). Pada latihan terakhir ini, Anda akan menempatkan seluruh kode pemrosesan data ke dalam satu fungsi sehingga Anda dapat menggunakannya kembali tanpa perlu menulis ulang hal yang sama berulang kali.
Anda akan mendefinisikan fungsi plot_pop() yang menerima dua argumen: nama berkas yang akan diproses, dan kode negara dari baris yang ingin Anda proses dalam himpunan data.
Karena semua kode yang telah Anda tulis pada latihan sebelumnya akan dimasukkan ke dalam plot_pop(), pemanggilan fungsi ini akan melakukan hal-hal berikut:
- Memuat berkas secara bertahap per bagian (chunk),
- Membuat kolom baru berisi nilai populasi perkotaan, dan
- Membuat plot data populasi perkotaan.
Itu banyak pekerjaan, tetapi fungsi ini kini memudahkan Anda untuk mengulangi proses yang sama untuk berkas dan kode negara mana pun yang ingin Anda proses dan visualisasikan!
Anda akan menggunakan data dari 'ind_pop_data.csv' yang tersedia di direktori saat ini. Paket pandas dan matplotlib.pyplot telah diimpor masing-masing sebagai pd dan plt untuk Anda gunakan.
Setelah selesai, luangkan waktu sejenak untuk melihat plot dan renungkan keterampilan baru yang telah Anda peroleh. Perjalanan tidak berhenti di sini! Jika Anda menikmati bekerja dengan data ini, Anda dapat terus mengeksplorasinya menggunakan versi pra-proses yang tersedia di Kaggle.
Latihan ini adalah bagian dari kursus
Kotak Perkakas Python
Petunjuk latihan
- Definisikan fungsi
plot_pop()dengan dua argumen: pertamafilenameuntuk berkas yang akan diproses dan keduacountry_codeuntuk negara yang akan diproses dalam himpunan data. - Panggil
plot_pop()untuk memproses data dengan kode negara'CEB'pada berkas'ind_pop_data.csv'. - Panggil
plot_pop()untuk memproses data dengan kode negara'ARB'pada berkas'ind_pop_data.csv'.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Define plot_pop()
def ____(____, ____):
# Initialize reader object: urb_pop_reader
urb_pop_reader = pd.read_csv(filename, chunksize=1000)
# Initialize empty DataFrame: data
data = pd.DataFrame()
# Iterate over each DataFrame chunk
for df_urb_pop in urb_pop_reader:
# Check out specific country: df_pop_ceb
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == country_code]
# 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 = pd.concat([data, df_pop_ceb])
# Plot urban population data
data.plot(kind='scatter', x='Year', y='Total Urban Population')
plt.show()
# Set the filename: fn
fn = 'ind_pop_data.csv'
# Call plot_pop for country code 'CEB'
# Call plot_pop for country code 'ARB'