Einen Iterator schreiben, um Daten in Blöcken zu laden (5)
Dies ist die letzte Etappe. Du hast viel darüber gelernt, wie man einen großen Datensatz in Blöcken verarbeitet. In dieser letzten Aufgabe wirst du den gesamten Code für die Verarbeitung der Daten in eine einzige Funktion packen, damit du den Code wiederverwenden kannst, ohne dass du die gleichen Dinge immer wieder neu schreiben musst.
Du definierst die Funktion plot_pop()
, die zwei Argumente benötigt: den Dateinamen der zu verarbeitenden Datei und den Ländercode der Zeilen, die du im Datensatz verarbeiten willst.
Da der gesamte Code, den du in den vorangegangenen Aufgaben geschrieben hast, in plot_pop()
untergebracht ist, bewirkt der Aufruf der Funktion bereits Folgendes:
- Laden der Datei, Block für Block
- Erstellen der neuen Spalte mit den Werten der städtischen Bevölkerung
- Plotten der Daten zur städtischen Bevölkerung
Das ist eine Menge Arbeit, aber mit der Funktion kannst du den gleichen Vorgang einfach für jede Datei und jeden Ländercode wiederholen, den du bearbeiten und visualisieren möchtest!
Du wirst die Daten aus 'ind_pop_data.csv'
verwenden, die in deinem aktuellen Verzeichnis verfügbar sind. Die Pakete pandas und matplotlib.pyplot wurden als pd
bzw. plt
importiert, damit du sie sofort nutzen kannst.
Wenn du fertig bist, nimm dir einen Moment Zeit, um die Plots zu betrachten und über deine neu erworbenen Fähigkeiten nachzudenken. Die Reise ist hier noch nicht zu Ende! Wenn dir die Arbeit mit diesen Daten gefallen hat, kannst du sie mit der vorverarbeiteten Version auf Kaggle weiter erforschen.
Diese Übung ist Teil des Kurses
Python Toolbox
Anleitung zur Übung
- Definiere die Funktion
plot_pop()
, die zwei Argumente hat: Das erste istfilename
für die zu verarbeitende Datei und das zweite istcountry_code
für das zu verarbeitende Land im Datensatz. - Rufe
plot_pop()
auf, um die Daten für den Ländercode'CEB'
in der Datei'ind_pop_data.csv'
zu verarbeiten. - Rufe
plot_pop()
auf, um die Daten für den Ländercode'ARB'
in der Datei'ind_pop_data.csv'
zu verarbeiten.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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'