### 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()
# ============================================