Escritura de un iterador para cargar datos en fragmentos (5)
Esta es la última etapa. Has aprendido mucho sobre el procesamiento de un gran conjunto de datos en fragmentos. En este último ejercicio, pondrás todo el código de procesamiento de los datos en una única función para poder reutilizar el código sin tener que volver a escribir lo mismo una y otra vez.
Definirás la función plot_pop()
, que toma dos argumentos: el nombre de archivo del archivo que se va a procesar y el código de país de las filas que quieres procesar en el conjunto de datos.
Como todo el código que has escrito en los ejercicios anteriores estará alojado en plot_pop()
, al llamar a la función ya se hace lo siguiente:
- Cargar el archivo fragmento a fragmento
- Crear la nueva columna de valores de población urbana
- Representar gráficamente los datos de población urbana
Eso es mucho trabajo, pero ahora la función permite repetir cómodamente el mismo proceso para cualquier archivo y código de país que quieras procesar y visualizar.
Usarás los datos de 'ind_pop_data.csv'
, disponible en tu directorio actual. Los paquetes pandas y matplotlib.pyplot se han importado como pd
y plt
, respectivamente, para que los uses.
Cuando termines, dedica un momento a mirar los gráficos y reflexionar sobre las nuevas competencias que has adquirido. El viaje no termina aquí. Si te ha gustado trabajar con estos datos, puedes continuar explorándolos con la versión preprocesada disponible en Kaggle.
Este ejercicio forma parte del curso
Caja de herramientas Python
Instrucciones de ejercicio
- Define la función
plot_pop()
, que tiene dos argumentos: el primero esfilename
para el archivo que se debe procesar y el segundo escountry_code
para el país que se debe procesar en el conjunto de datos. - Llama a
plot_pop()
para procesar los datos con el código de país'CEB'
del archivo'ind_pop_data.csv'
. - Llama a
plot_pop()
para procesar los datos con el código de país'ARB'
del archivo'ind_pop_data.csv'
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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'