====== Guía 8 ====== * {{ :indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia_de_ejercicios_n_8.docx.pdf |Guía de Ejercicios Nro 8}} * {{ :indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:consignas_en_codigo_-_matplotlib.py |Consignas en Código - Guía de Ejercicios Nro 8}} ===== Resueltos ===== ### 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() # ============================================