Gráficos Estadísticos con Matplotlib -
Gráficos de Área
Un gráfico de área es un gráfico de líneas en el que el área
entre la línea y el eje aparece sombreada con un color. Estos gráficos
normalmente se usan para representar los totales acumulados a lo largo del
tiempo y son la forma convencional de visualizar líneas apiladas.
Para el ejemplo que hemos estado usando en este blog, debemos además ordenar los datos para que nuestro gráfico nos muestre los datos de los primeros resultados, en este caso le llamaremos Top 5 de países, como antecedente tenemos el código de apertura del archivo:
import numpy as np
import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as pllt
#lee el archivo xls
df_can = pd.read_excel(
'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',
#ignora las primeras 20 filas que corresponden al enunciado
skiprows =range(20),
sheet_name="Canada by Citizenship",
skipfooter=2
)
#renombra las columnas
df_can = df_can.rename(columns={"OdName": "Country", "AreaName": "Continent", "RegName": "Region"})
#configura a Country como linea de indice para usarlo despues en las busquedas.
df_can = df_can.set_index('Country')
# Elimina unas columnas extras
df_can = df_can.drop(columns=["Type", "Coverage", "AREA", "REG", "DEV"])
# Calcula el total
df_can['Total'] = df_can.iloc[:, 3:].sum(axis=1)
# Convierte todos los nombres de las columnas en string
df_can.columns = df_can.columns.astype(str)
Y a continuación el código que nos ayuda en la manipulación de los datos para mostrar el cuadro por área:
#creamos una estructura con los datos
years= list(map(str,range(1980,2014)))
#Ordenar los datos
df_can.sort_values(['Total'], ascending = False, axis = 0, inplace = True)
#Mostrar solo los primeros 5 resultados
df_top5=df_can.head()
df_top5=df_top5[years].transpose()
#Definimos el tipo de cuadro
df_top5.plot(kind='area')
#seleccionamos los datos del archivo
#df_can.loc['Haiti',years].plot(kind='line')
#configuramos la visualizacion del cuadro
pllt.title('Inmigration trend of top 5 countries')
pllt.ylabel('Number of Inmigrants')
pllt.xlabel('Years')
pllt.show()
print(df_can.head())