Escritura de un iterador para cargar datos en fragmentos (3)
Te estás acostumbrando a leer y procesar datos en fragmentos. Llevemos tus competencias un poco más lejos añadiendo una columna a un DataFrame.
Partiendo del código del ejercicio anterior, utilizarás una comprensión de listas para crear los valores de la nueva columna 'Total Urban Population' a partir de la lista de tuplas que has generado. Recuerda del ejercicio anterior que el primer y segundo elemento de cada tupla están formados, respectivamente, por valores de las columnas 'Total Population' y 'Urban population (% of total)'. Los valores de la nueva columna 'Total Urban Population', por lo tanto, son el producto del primer y segundo elemento de cada tupla. Además, como el segundo elemento es un porcentaje, debes dividir todo el resultado entre 100 o multiplicarlo por 0.01.
También representarás gráficamente los datos de esta nueva columna para crear una visualización de los datos de población urbana.
Los paquetes pandas y matplotlib.pyplot se han importado como pd y plt, respectivamente, para que los uses.
Este ejercicio forma parte del curso
Caja de herramientas Python
Instrucciones del ejercicio
- Escribe una comprensión de listas para generar una lista de valores a partir de
pops_listpara la nueva columna'Total Urban Population'. La expresión de salida debe ser el producto del primer y segundo elemento de cada tupla depops_list. Como el segundo elemento es un porcentaje, también tienes que multiplicar el resultado por0.01o dividirlo entre100. Además, ten en cuenta que la columna'Total Urban Population'solo debe poder tomar valores enteros. Para asegurarte de que sea así, convierte la expresión de salida en un número entero conint(). - Crea un diagrama de dispersión en el que el eje X sean valores de la columna
'Year'y el eje Y sean valores de la columna'Total Urban Population'.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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()