Visualización y Manejo de Datos

En este ejercicio leeremos una base de datos en Excel (distritos del Perú). Para luego plotear el porcentaje de área que representa cada departamento en un Gráfico Circular.

Importamos las librería a utilizar

In [1]:
import pandas as pd
import matplotlib.pyplot as plt

Definimos la ruta del archivo, qué columnas y hojas del Excel se va a considerar.

In [2]:
path = './data/BAS_LIM_DISTRITOS.xlsx'
my_sheet = 'BAS_LIM_DISTRITOS'
cols={'ID','NOMBDIST','NOMBPROV','NOMBDEP',"SHAPE_AREA"}

Leemos la base de datos usando la librería pandas.

In [3]:
df = pd.read_excel(path, sheet_name = my_sheet, usecols=cols)
print(df.head)
<bound method NDFrame.head of         ID                              NOMBDIST NOMBPROV NOMBDEP  SHAPE_AREA
0        1  CORONEL GREGORIO ALBARRACIN LANCHIPA    TACNA   TACNA    0.016140
1        2                              POCOLLAY    TACNA   TACNA    0.022816
2        3                                CALANA    TACNA   TACNA    0.009458
3        4                                 TACNA    TACNA   TACNA    0.209156
4        5                                  SAMA    TACNA   TACNA    0.096789
...    ...                                   ...      ...     ...         ...
1829  1830                                 TIGRE   LORETO  LORETO    1.637168
1830  1831                                  NAPO   MAYNAS  LORETO    1.986357
1831  1832                              PUTUMAYO   MAYNAS  LORETO    2.884865
1832  1833                        TORRES CAUSANA   MAYNAS  LORETO    0.609698
1833  1834               TENIENTE MANUEL CLAVERO   MAYNAS  LORETO    0.742758

[1834 rows x 5 columns]>

Luego, definimos dos listas que contendrán información del porcentaje de área y nombre de los departamentos.

In [4]:
areas = []
depas = []

Manejamos los datos leídos de tal manera de que se obtenga el área de cada departamento como la suma del área de sus distritos.

In [5]:
for depa in  df['NOMBDEP'].unique():
    temp=df.loc[df['NOMBDEP'] == depa]
    areas.append(sum(temp["SHAPE_AREA"]))
    depas.append(depa)

Convertimos listas a una base de datos tipo 'dataframe'

In [6]:
df_dep = pd.DataFrame(list(zip(depas,areas)),columns =['DEPA', 'AREA'])
df_dep = df_dep.sort_values('AREA')

Realizamos el gráfico circular con la librería matplotlib

In [12]:
fig1, ax1 = plt.subplots()
ax1.title.set_text('Gráfico Circular - Departamentos')
fig1.canvas.set_window_title('Gráfico Circular')
ax1.pie(df_dep['AREA'], labels=df_dep['DEPA'], autopct='%1.1f%%', startangle=90,textprops={'fontsize': 8})
ax1.axis('equal')
plt.show()
2021-03-08T19:59:44.842019 image/svg+xml Matplotlib v3.3.3, https://matplotlib.org/
In [ ]: