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

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-8 [2025/06/06 22:06] upadminindice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-8 [2025/06/07 21:36] (actual) upadmin
Línea 6: Línea 6:
  
 ===== Resueltos ===== ===== Resueltos =====
 +
 +<file python 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()
 +
 +# ============================================
 +</file>
  • indice/uba/ingenieria/uba-xxi/pensamiento-computacional/guias-y-resueltos/guia-8.1749247599.txt.gz
  • Última modificación: 2025/06/06 22:06
  • por upadmin