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 de ejercicio
- Escribe una comprensión de listas para generar una lista de valores a partir de
pops_list
para 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.01
o 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
Pruebe este ejercicio completando este 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()