indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-8

Guía 8

resueltos_guia_8.py
### Práctica Matplotlib
"""En el presente archivo se pondrán en práctica los conocimiento para visualizar datos de manera correcta. 
Por ese motivo, se verán líneas de código completas y otras para completar en función de lo que el estudiante desea analizar. 
Es decir, las figuras se dejan a modo de ejemplo y de referencia para resolver los ejercicios, pero no tienen que ser exactamente igual a la de los alumnos."""
 
##Primero, se importan las librerías que se usarán:
 
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
## Ejercicio de tipo de gráficos.
"""Para realizar este ejercicio, debemos importar la información del PBI per cápita de los distintos países, a lo largo de un período que abarca desde 1952 y 2007."""
 
# Importo la información
url = "https://raw.githubusercontent.com/plotly/datasets/master/gapminder_with_codes.csv"
data = pd.read_csv(url)
 
# Modificar el tipo de dato:
data['year'] = data['year'].astype("int")
 
print(data.head()) #Sino se aclara toma 5 primeras filas.
 
data.info()
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 1: 
""" Elije un año en el que desees ver la relación entre la expectativa de vida de los habitantes (columna `lifeExp`) y el PBI per cápita de los habitantes (columna gdpPercap)"""
 
# Modifica este valor
# =========== Código de alumno ===============
year = 1972
# ============================================
 
data_year = data[data["year"] == year]
print(data_year.head())
 
"""Realiza un gráfico de puntos que muestre la relación entre la expectativa de vida (columna `lifeExp`) y el PBI per cápita de los habitantes (columna gdpPercap).
 
El gráfico debe tener:
- Título apropiado
- Nombre y unidades de los ejes cartesianos
- Marcador de tipo triangular y color "#23A763"
- Grilla
"""
 
fig, ax = plt.subplots()
 
# =========== Código de alumno ===============
 
plt.xlabel("PBI per cápita")
plt.ylabel("Expectativa de vida")
plt.title("Relacion PBI per Capita - Esperanza de Vida")
 
plt.scatter(data_year["gdpPercap"], data_year["lifeExp"],color='#23A763',marker="^")
 
plt.grid()
 
# ============================================
 
plt.show()
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 2:
"""Creamos un nuevo DataFrame con la información de la Argentina únicamente """
 
data_arg = data[data["country"] == "Argentina"]
print(data_arg.head())
 
"""Realiza un gráfico de línea que muestre el PBI per cápita de los habitantes de Argentina (columna gdpPercap) a lo largo del tiempo:
 
El gráfico debe tener:
- Título apropiado
- Nombre y unidades de los ejes cartesianos
- Linea sólida, espesor 2.2 y color "#30BFDE"
- Grilla
"""
 
fig, ax = plt.subplots()
 
# =========== Código de alumno ===============
 
plt.xlabel("Año")
plt.ylabel("PBI per Capita")
plt.title("Evolucion PBI per Capita Argentino")
 
plt.plot(data_arg["year"], data_arg["gdpPercap"],linestyle="-", linewidth=2.2, color='#30BFDE')
 
plt.grid()
 
 
# ============================================
plt.show()
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 3:
"""A continuación verá todos los países de los que poseemos información. Elije uno que no sea nuestro país y luego, crea un nuevo DataFrame."""
 
print(data["country"].unique())
 
# =========== Código de alumno ===============
country = "Nicaragua"
# ============================================
 
data_country = data[data["country"] == country]
print(data_country.head())
 
"""Realiza un gráfico de línea que muestre el PBI per cápita de los habitantes de Argentina (columna gdpPercap) a lo largo del tiempo y del país escogido anteriormente:
 
El gráfico debe tener:
- Título apropiado
- Nombre y unidades de los ejes cartesianos
- Linea sólida, espesor 2.2 y color "#30BFDE" para la curva de nuestro país.
- Linea sólida, espesor 2.2 y color "#1E92E3" para la curva del nuevo país.
- Referencias
- Grilla
"""
 
fig, ax = plt.subplots()
 
# =========== Código de alumno ===============
 
plt.xlabel("Año")
plt.ylabel("PBI per Capita")
plt.title("Evolucion PBI per Capita - Argentina vs Nicaragua")
 
plt.plot(data_arg["year"], data_arg["gdpPercap"],linestyle="-", linewidth=2.2, color='#30BFDE', label="Argentina")
plt.plot(data_country["year"], data_country["gdpPercap"],linestyle="-", linewidth=2.2, color='#1E92E3', label="Nicaragua")
 
ax.legend()
 
plt.grid()
 
# ============================================
 
plt.show()
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 4:
"""A continuación vamos a agrupar PBI per capita por continente."""
 
data_continent = data[['continent', 'gdpPercap']]
data_continent = data_continent.groupby(['continent']).agg('sum')
print(data_continent)
 
"""Realiza un gráfico de torta la proporción del PBI per cápita de los habitantes de cada continente (columna gdpPercap).
 
El gráfico debe tener:
- Título apropiado
- Cada parte con el nombre del continente y el porcentaje redondeado a las décimas.
- El color de cada parte será:
  - América: "#30BFDE"
  - Asia: "#E31E4B"
  - África: "#E36F1E"
  - Oceanía: "#1EE39B"
  - Europa: "#1E92E3"
"""
 
fig, ax = plt.subplots()
 
# =========== Código de alumno ===============
 
continentes = data_continent.index.tolist()
print(continentes)
 
plt.title("PBI per Capita - Por continente")
plt.pie(data_continent["gdpPercap"], labels=continentes, autopct='%1.1f%%', colors=["#E36F1E", "#30BFDE", "#E31E4B", "#1E92E3", "#1EE39B"])
 
# ============================================
plt.show()
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 5:
"""Elije un continente el cual te gustaría analizar con más detalle: """
 
# =========== Código de alumno ===============
continent = "Americas"
# ============================================
 
data_one_continent = data[data["continent"] == continent]
data_one_continent = data_one_continent[['country', 'gdpPercap']]
data_one_continent = data_one_continent.groupby(['country']).agg('sum')
data_one_continent = data_one_continent.sort_values(by=['gdpPercap'])
print(data_one_continent[['gdpPercap']])
 
"""Realiza un gráfico de barras horizontales que muestre el PBI per cápita de los habitantes del continente escogido (columna gdpPercap).
 
El gráfico debe tener:
- Título apropiado
- Nombre y unidades de los ejes cartesianos en caso de ser necesario
- Nombre de los paises al lado de cada barra
- Grilla con líneas verticales únicamente, color "#CDD7DA" y línea discontinua.
"""
 
fig, ax = plt.subplots()
# =========== Código de alumno ===============
 
print(data_one_continent.index)
paises = data_one_continent.index.tolist()
print(paises)
 
plt.xlabel("PBI per Capita")
plt.ylabel("Pais")
plt.title("PBI per Capita - Paises en America")
plt.barh(paises, data_one_continent["gdpPercap"])
ax.grid(axis = 'x', color = "#CDD7DA", linestyle = 'dashed')
 
# ============================================
plt.show()
 
 
## Ejercicio de grillas:
"""Para este ejercicio, vamos a crear valores aleatorios, que serán contenidos en un DataFrame que llamaremos `df`:"""
 
np.random.seed(0)
df = pd.DataFrame(data={'a':np.random.randint(0, 100, 50),
                        'b':np.random.randint(0, 100, 50),
                        'c':np.random.randint(0, 100, 50),
                        'd':np.random.randint(0, 100, 50)})
print(df.head())
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 6:
"""Vamos a crear una grilla de 4 gráficos de línea, en la que los ejes x va a contener los valores del índice `df.index.values`, mientras que los ejes y, los valores de las columnas a, b, c y d.  
 
La figura debe tener:
- 2 filas y 2 columas
- Tamaño de figura de una altura de 8 y un ancho de 15.
- Nombre de los ejes y referencia en cada gráfico
- Grilla
- La siguiente posición de gráficos:
  - Los valores A en la parte superior izquierda, color `green`
  - Los valores B en la parte superior derecha, color `red`
  - Los valores C en la parte inferior izquierda, color `magenta`
  - Los valores D en la parte inferior derecha, color `blue`
"""
 
# =========== Código de alumno ===============
 
fig, ax = plt.subplots(figsize=(15, 8), nrows=2, ncols=2)
fig.suptitle("Análisis de valores aleatorios por columna", fontsize=16, y=0.98) #titulo general
fig.subplots_adjust(wspace=0.5, hspace=0.5) # Con esto indicamos el espacio libre entre los subplots
 
 
ax[0, 0].plot(df.index.values, df["a"], color = "green", label="Serie A")
ax[0, 1].plot(df.index.values, df["b"], color = "red", label="Serie B")
ax[1, 0].plot(df.index.values, df["c"], color = "magenta", label="Serie C")
ax[1, 1].plot(df.index.values, df["d"], color = "blue", label="Serie D")
 
ax[0,0].set_xlabel("Columna a")
ax[0,1].set_xlabel("Columna b")
ax[1,0].set_xlabel("Columna c")
ax[1,1].set_xlabel("Columna d")
 
ax[0,0].set_ylabel("Numeros Aleatorios")
ax[0,1].set_ylabel("Numeros Aleatorios")
ax[1,0].set_ylabel("Numeros Aleatorios")
ax[1,1].set_ylabel("Numeros Aleatorios")
 
ax[0, 0].set_title("Gráfico de la columna A", fontsize=12)
ax[0, 1].set_title("Gráfico de la columna B", fontsize=12)
ax[1, 0].set_title("Gráfico de la columna C", fontsize=12)
ax[1, 1].set_title("Gráfico de la columna D", fontsize=12)
 
ax[0, 0].legend()
ax[0, 1].legend()
ax[1, 0].legend()
ax[1, 1].legend()
 
ax[0, 0].grid()
ax[0, 1].grid()
ax[1, 0].grid()
ax[1, 1].grid()
 
plt.show()
 
# ============================================
 
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------------------------------------
 
print()
#Ejercicio 7:
"""Vamos a crear una grilla de 2 gráficos: uno de línea y otro de puntos, siendo los ejes x los valores del índice `df.index.values`, mientras que los ejes y, los valores de las columnas a, b, c y d.  
 
La figura debe tener:
- 2 filas y 1 columa
- Tamaño de figura de una altura de 8 y un ancho de 15.
- Título de cada gráfico
- Referencias
- Grilla
- La siguiente posición de gráficos:
  - Los valores A Y B en la parte superior, en un gráfico de línea, color `green` y `red`, tipo de línea sólida y discontinua respectivamente.
  - Los valores C Y D en la parte inferior, en un gráfico de puntos, color `magenta` y `blue`, marcador circular y triangulo invertido respectivamente.
"""
 
# =========== Código de alumno ===============
 
fig, ax = plt.subplots(figsize=(15, 8), nrows=2, ncols=1)
fig.suptitle("Análisis de valores aleatorios por columna", fontsize=16, y=0.98) #titulo general
fig.subplots_adjust(wspace=0.5, hspace=0.5) # Con esto indicamos el espacio libre entre los subplots
 
ax[0].plot(df.index.values, df["a"], color = "green", label="Serie A")
ax[0].plot(df.index.values, df["b"], color = "red", linestyle="--" , label="Serie B")
ax[1].scatter(df.index.values, df["c"], color = "magenta", label="Serie C")
ax[1].scatter(df.index.values, df["d"], color = "blue", marker="v" , label="Serie D")
 
ax[0].set_xlabel("Indice")
ax[1].set_xlabel("Indice")
 
ax[0].set_ylabel("Numeros Aleatorios")
ax[1].set_ylabel("Numeros Aleatorios")
 
ax[0].set_title("Gráfico de las columnas A y B", fontsize=12)
ax[1].set_title("Gráfico de las columnas C y D", fontsize=12)
 
ax[0].legend()
ax[1].legend()
 
ax[0].grid()
ax[1].grid()
 
plt.show()
 
# ============================================
  • indice/uba/ingenieria/uba-xxi/pensamiento-computacional/guias-y-resueltos/guia-8.txt
  • Última modificación: 2025/06/07 21:36
  • por upadmin