Estás navegando por el archivo de webinar.

Tutorial: Limpieza y visualizaciones para encontrar patrones con Python

- el agosto 31, 2017 en Tutoriales

Desde Escuela de Datos, Sebastián Oliva, fellow 2017, enseña cómo usar la librería de Pandas para Python para importar distintas bases de datos. En este ejercicio conocemos qué es una base de datos relacional, de qué trata el lenguaje SQL, y en el terreno práctico, cómo hacer algunas visualizaciones en Python para hallar patrones interesantes.
Puedes seguir paso a paso viendo este video-tutorial, siguiendo el cuaderno que publicamos abajo o consultando el cuaderno de trabajo de Sebastián en este link.
Lee el resto de la entrada →

Limpieza y transformaciones de datos con Python II

- el julio 26, 2017 en Fuentes de datos, Guest posts, Tutoriales, Uncategorized

Desde Escuela de Datos, Sebastián Oliva, fellow 2017, enseña cómo usar la librería de Pandas, Numpy y Seaborn para Python para hacer manipulaciones, transformaciones y tablas dinámicas o pivotes. En este ejercicio vimos cómo hacer un stack, agrupaciones, e incluso cómo usar un hash para hacer anónimos algunos de nuestros datos sin perder granularidad.
Pues seguir el webinar del 26 de julio paso a paso en el cuaderno que compartimos contigo. También puedes consultar el cuaderno de trabajo de Sebastián aquí.

Estas son las librerías que usaremos y que es requerido importar para nuestro ejercicio.
In [1]:
import pandas as pd
import numpy as np
import seaborn
%pylab notebook

import hashlib
import humanhash

Tablas Pivote

Es muy común la agrupación de información en formato ‘stack’ donde tenemos filas de datos que demuestran una correlación entre dos sets de valores.

Las tablas pivote son una forma de re-ordenar los datos en una estructura tabular donde podemos agrupar los valores convirtiendo las tuplas entre valores numéricos.

En este caso de ejemplo, crearemos un dataset de prueba con la diversidad de restaurantes en varias ciudades centroamericanas. En esta vamos a comenzar a trabajar con dos columnas, una donde describe cada ciudad y la otra con la variedad de cocina disponible en cada una.

In [2]:
data_restaurantes = {
    'ciudades': ['Guatemala','Guatemala','Guatemala','Guatemala','Guatemala','Guatemala','San José','San José','San José','San José','San José','San Salvador','San Salvador','San Salvador'],
    'culinaria': ['Chapina','Chapina','China','Thai','Italiana','Chapina','Italiana','China','Tica','Chapina','Tica','Tica','Italiana','China']
}

restaurantes_dataframe_pares = pd.DataFrame(data_restaurantes)
restaurantes_dataframe_pares
Out[2]:
ciudades culinaria
0 Guatemala Chapina
1 Guatemala Chapina
2 Guatemala China
3 Guatemala Thai
4 Guatemala Italiana
5 Guatemala Chapina
6 San José Italiana
7 San José China
8 San José Tica
9 San José Chapina
10 San José Tica
11 San Salvador Tica
12 San Salvador Italiana
13 San Salvador China

Podemos ver entonces este listado de valores, tupla por tupla. Que tal si queremos contar la presencia de cada tipo de cocina en cada región. Probemos utilizando entonces el comando DataFrame.pivot_table de Pandas.

Este pide unos cuantos argumentos los que podemos ver en la documentación. Unos cuantos son obvios, como el definir las filas y columnas que esperamos de la tabla objetivo. Sin embargo, lo más notable es que ya que los tipos de datos que estamos utilizando no son numéricos, es necesario que definamos una funcion de agrupación que nos permita contar la cantidad de instancias de cada combinación.

In [3]:
def funcion_agrupacion(elemento):
    return True

agrupacion_culinaria = restaurantes_dataframe_pares.pivot_table(
    index=["ciudades"],
    columns="culinaria",
    aggfunc=funcion_agrupacion,
    fill_value=False)
agrupacion_culinaria
Out[3]:
culinaria Chapina China Italiana Thai Tica
ciudades
Guatemala True True True True False
San José True True True False True
San Salvador False True True False True

Hmm, esto ya se ve con la forma que queremos, sin embargo solo nos muestra la presencia o ausencia de algún tipo de cocina. Esto es fácil de explicar ya que definimos nuestra función de agrupación como retornar True si existe presencia a retornar False si No. ¿Qué tal si hacemos una mejor función de agrupación?

In [4]:
def funcion_agrupacion(elemento):
    '''Contemos cuantas instancias de cada tupla existen.'''
    ## El comando len(iterable) cuenta la cantidad de elementos que tiene el objeto iterable que le pasemos
    ## los elementos iterables pueden ser listas normales, Series de NumPy o Pandas, o diccionarios y otros tipos de datos.
    return len(elemento)
agrupacion_culinaria = restaurantes_dataframe_pares.pivot_table(index=["ciudades"], columns="culinaria", aggfunc=lambda x: funcion_agrupacion(x), fill_value=0)
agrupacion_culinaria
Out[4]:
culinaria Chapina China Italiana Thai Tica
ciudades
Guatemala 3 1 1 1 0
San José 1 1 1 0 2
San Salvador 0 1 1 0 1

¡Genial! Ahora ya tenemos agrupadas estas de una forma coherente. Ahora ya podemos seguir manipulando y editando estos datos. Pero, ¿qué tal si hacemos un poco más simple esta llamada? Al final nuestra función de agrupación lo unico que hace es contar la cantidad de tuplas sobre las cuales aplica el pivote. ¿Qué tal si lo hacemos un poco más simple?

In [5]:
agrupacion_culinaria = restaurantes_dataframe_pares.pivot_table(
    index=["ciudades"], 
    columns="culinaria", 
    aggfunc=len, ## Enviamos directamente la función de agrupación. Entre otras funcionas de agrupacíon útiles está np.sum (la función de suma de NumPy) y np.mean (media)
    fill_value=0)
agrupacion_culinaria
Out[5]:
culinaria Chapina China Italiana Thai Tica
ciudades
Guatemala 3 1 1 1 0
San José 1 1 1 0 2
San Salvador 0 1 1 0 1

Claro, la tabla resultante se comporta exactamente igual y tiene todas las propiedades nativas de los DataFrames. ¿Qué tal si limitamos la query a solo los lugares en ciudad de Guatemala?

In [6]:
agrupacion_culinaria.query('ciudades == ["Guatemala"]')
Out[6]:
culinaria Chapina China Italiana Thai Tica
ciudades
Guatemala 3 1 1 1 0
In [7]:
help(restaurantes_dataframe_pares.pivot_table)
Help on method pivot_table in module pandas.core.reshape.pivot:

pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All') method of pandas.core.frame.DataFrame instance
    Create a spreadsheet-style pivot table as a DataFrame. The levels in the
    pivot table will be stored in MultiIndex objects (hierarchical indexes) on
    the index and columns of the result DataFrame
    
    Parameters
    ----------
    data : DataFrame
    values : column to aggregate, optional
    index : column, Grouper, array, or list of the previous
        If an array is passed, it must be the same length as the data. The list
        can contain any of the other types (except list).
        Keys to group by on the pivot table index.  If an array is passed, it
        is being used as the same manner as column values.
    columns : column, Grouper, array, or list of the previous
        If an array is passed, it must be the same length as the data. The list
        can contain any of the other types (except list).
        Keys to group by on the pivot table column.  If an array is passed, it
        is being used as the same manner as column values.
    aggfunc : function or list of functions, default numpy.mean
        If list of functions passed, the resulting pivot table will have
        hierarchical columns whose top level are the function names (inferred
        from the function objects themselves)
    fill_value : scalar, default None
        Value to replace missing values with
    margins : boolean, default False
        Add all row / columns (e.g. for subtotal / grand totals)
    dropna : boolean, default True
        Do not include columns whose entries are all NaN
    margins_name : string, default 'All'
        Name of the row / column that will contain the totals
        when margins is True.
    
    Examples
    --------
    >>> df
       A   B   C      D
    0  foo one small  1
    1  foo one large  2
    2  foo one large  2
    3  foo two small  3
    4  foo two small  3
    5  bar one large  4
    6  bar one small  5
    7  bar two small  6
    8  bar two large  7
    
    >>> table = pivot_table(df, values='D', index=['A', 'B'],
    ...                     columns=['C'], aggfunc=np.sum)
    >>> table
              small  large
    foo  one  1      4
         two  6      NaN
    bar  one  5      4
         two  6      7
    
    Returns
    -------
    table : DataFrame
    
    See also
    --------
    DataFrame.pivot : pivot without aggregation that can handle
        non-numeric data

In [8]:
## Con el argumento Margins, Panda calcula los valores sumados de los totales por agrupación.
agrupacion_culinaria_m = restaurantes_dataframe_pares.pivot_table(
    index=["ciudades"],
    columns="culinaria",
    aggfunc=len,
    fill_value=0,
    margins=True,
    margins_name="Total")
agrupacion_culinaria_m
Out[8]:
culinaria Chapina China Italiana Thai Tica Total
ciudades
Guatemala 3.0 1.0 1.0 1.0 0.0 6.0
San José 1.0 1.0 1.0 0.0 2.0 5.0
San Salvador 0.0 1.0 1.0 0.0 1.0 3.0
Total 4.0 3.0 3.0 1.0 3.0 14.0

Múltiples Valores y Múltiples Indices

¿Qué tal si tenemos datos que tienen una estructura Jerárquica inherente? Podemos utilizar la misma forma de multi indexación que vimos en el seminario pasado, lo importante es que a la hora de la definición del índice, Pandas es capaz de manipularlos e inteligentemente ordenar los niveles acorde.

In [9]:
restaurantes_dataframe_pares['estrellas'] = [5,3,3,5,3,1,2,2,4,3,4,3,2,3]
restaurantes_dataframe_estrellas = restaurantes_dataframe_pares
restaurantes_dataframe_estrellas
Out[9]:
ciudades culinaria estrellas
0 Guatemala Chapina 5
1 Guatemala Chapina 3
2 Guatemala China 3
3 Guatemala Thai 5
4 Guatemala Italiana 3
5 Guatemala Chapina 1
6 San José Italiana 2
7 San José China 2
8 San José Tica 4
9 San José Chapina 3
10 San José Tica 4
11 San Salvador Tica 3
12 San Salvador Italiana 2
13 San Salvador China 3

Pivotando sobre la especialidad culinaria y estrellas, podemos las ciudades con la mayor oferta culinaria, o cuales tienen el mejor promedio de estrellas.

In [10]:
agrupacion_culinaria_promedio_estrellas = restaurantes_dataframe_estrellas.pivot_table(
    index=["ciudades"], 
    values=["culinaria", "estrellas"], 
    aggfunc={"culinaria":len,"estrellas":np.mean},
    fill_value=0)
agrupacion_culinaria_promedio_estrellas
Out[10]:
culinaria estrellas
ciudades
Guatemala 6 3.333333
San José 5 3.000000
San Salvador 3 2.666667

¿Qué tal si queremos ver cuantas estrellas en promedio tienen los restaurantes, por clase de comida, por ciudad?

In [11]:
agrupacion_culinaria_por_estrellas = restaurantes_dataframe_estrellas.pivot_table(
    index=["culinaria"], 
    values=["estrellas"], 
    columns=["estrellas"],
    aggfunc={"estrellas":np.mean},
    fill_value=0)
agrupacion_culinaria_por_estrellas
Out[11]:
estrellas
estrellas 1 2 3 4 5
culinaria
Chapina 1 0 3 0 5
China 0 2 3 0 0
Italiana 0 2 3 0 0
Thai 0 0 0 0 5
Tica 0 0 3 4 0
In [12]:
agrupacion_culinaria_por_estrellas = restaurantes_dataframe_estrellas.pivot_table(
    index=["culinaria"], 
    values=["estrellas"], 
    columns=["estrellas"],
    aggfunc={"estrellas":len},
    fill_value=0)
agrupacion_culinaria_por_estrellas
Out[12]:
estrellas
estrellas 1 2 3 4 5
culinaria
Chapina 1 0 2 0 1
China 0 1 2 0 0
Italiana 0 2 1 0 0
Thai 0 0 0 0 1
Tica 0 0 1 2 0

Hmm… esto no es muy útil, solo nos dice tautológicamente, que los restaurantes de ‘n’ estrellas tienen ‘n’ estrellas. ¿Pueden ver porque el error?

In [13]:
agrupacion_culinaria_por_estrellas = restaurantes_dataframe_estrellas.pivot_table(
    index=["ciudades"], 
    values=["estrellas"], 
    columns=["culinaria"], ## Aqui es obvio ver que lo que queremos es diferenciar por variedad culinaria.
    aggfunc={"estrellas":np.mean},
    fill_value=0)
agrupacion_culinaria_por_estrellas
Out[13]:
estrellas
culinaria Chapina China Italiana Thai Tica
ciudades
Guatemala 3 3 3 5 0
San José 3 2 2 0 4
San Salvador 0 3 2 0 3
In [14]:
agrupacion_culinaria_por_estrellas.plot(kind="bar")
<IPython.core.display.Javascript object>
Out[14]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fc53ffa1a58>

Entonces, recapitulando:

¿De qué nos sirven las tablas pivote?

¿Que clase de operación representan?

¿En que casos podemos usarlas?

Agrupando, parte dos

Ya vimos algunos de los criterios básicos de agrupación en el primer webinar, ahora podemos avanzar un poco, combinando agrupación con pivote.

Tambien podemos usar stack, que es otra forma de agrupación basada en índices.

In [15]:
maga_fitosanitario = pd.read_csv("MAGA - CERTIFICADOS FITOSANITARIOS.csv")
In [16]:
hashlib.md5("Hola".encode("UTF-8")).hexdigest()
Out[16]:
'f688ae26e9cfa3ba6235477831d5122e'
In [17]:
pd.set_option('display.float_format', lambda x: '%.1f' % x)

## Vamos a limpiar un poco de información
def ofusca_nombre(nombre):
    return humanhash.humanize(hashlib.md5(nombre.encode("UTF-8")).hexdigest())

maga_fitosanitario["Solicitante"] = maga_fitosanitario["Solicitante"].map(ofusca_nombre)
maga_fitosanitario["Fecha Autorización"] = maga_fitosanitario["Fecha Autorización"].map(pd.Timestamp)
In [18]:
def clean_q(input_object):
    from re import sub  ## importamos la función sub, que substituye utilizando patrones
    ## https://es.wikipedia.org/wiki/Expresión_regular
    
    ## NaN es un objeto especial que representa un valor numérico invalido, Not A Number.
    if input_object == NaN:
        return 0
    inp = unicode(input_object) # De objeto a un texto
    cleansed_00 = sub(r'\.000', '000', inp) 
    cleansed_nonchar = sub(r'[^0-9]+', '', cleansed_00)
    if cleansed_nonchar == '':
        return 0
    return cleansed_nonchar

maga_fitosanitario["Kg. Netos"] = maga_fitosanitario["Kg. Netos"].map(clean_q).astype(float)
In [36]:
maga_fitosanitario["Kg. Netos"].head()
Out[36]:
0   1360779.0
1    816467.0
2   3483624.0
3   3483624.0
4    151800.0
Name: Kg. Netos, dtype: float64
In [20]:
maga_fitosanitario = pd.read_csv("MAGA - CERTIFICADOS FITOSANITARIOS - LIMPIO.csv")
maga_fitosanitario.head()
Out[20]:
Incidente Fecha Autorización Solicitante Permiso Producto Categoría CIF $ Kg. Netos Aduana País procedencia País origen Otra fuente de origen
0 49 2014-04-04 sodium-pasta-glucose-mexico 142432 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 125.0 1360779.0 MELCHOR DE MENCOS Belice Belice NaN
1 50 2014-04-04 sodium-pasta-glucose-mexico 142425 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 75.0 816467.0 MELCHOR DE MENCOS Belice Belice NaN
2 275 2014-07-04 robert-vermont-one-robert 142479 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
3 276 2014-07-04 robert-vermont-one-robert 142480 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
4 177 2014-07-04 zebra-missouri-arkansas-island 142478 HARINA DE TRIGO HARINA DE TRIGO 81601.2 151800.0 TECUN UMAN México México NaN
In [21]:
maga_fitosanitario.groupby("Producto").sum().sort_values("CIF $", ascending=False).head(20)
Out[21]:
Permiso CIF $ Kg. Netos
Producto
MAIZ AMARILLO 53491946 183595249.4 2753711966.0
HARINA DE SOYA 18899910 56391529.9 177684115.0
ARROZ EN GRANZA 3201212 24568825.5 59041504.0
HARINA DE TRIGO 76664602 24272107.3 54953080.0
AJONJOLI NATURAL 9215686 15985707.0 20396870.0
ARROZ GRANZA 15088878 13883822.8 57978262.0
ALGODON 9014988 12028250.9 200973442.0
ALGODON SIN CARDAR NI PEINAR 5222374 8151960.6 19619672.0
MADERA DE PINO (SECA) 9285734 6498009.3 11404341.0
ARROZ 8758770 6111828.4 9988554.0
FRIJOL SOYA 1596785 5624212.9 17070365.0
MANZANAS 33723186 5591158.4 20625086.0
SEMOLA DE TRIGO 56157142 4567556.7 8012544.0
FRIJOL DE SOYA 434597 4262725.7 7231349.0
SEMILLA DE MELON 6774325 4132506.5 1113131.0
MAIZ BLANCO 4420695 4036005.2 161351106.0
AVENA PELADA Y ESTABILIZADA 3052102 3316810.3 51045868.0
MALTA DE CEBADA 440964 3160297.3 5316000.0
HARINA DE MAIZ 35816036 3134320.9 5236321.0
ALGODON SIN PEINAR NI CARDAR 1309843 2879479.1 1354471.0
In [22]:
maga_productos_pivot = maga_fitosanitario.pivot_table(
    index=["Categoría", "Producto"], 
    values=["CIF $", "Permiso","Kg. Netos"], 
    aggfunc={"CIF $":np.sum,"Permiso":len, "Kg. Netos": np.sum},
    fill_value=0)
In [23]:
maga_productos_pivot
Out[23]:
CIF $ Kg. Netos Permiso
Categoría Producto
AJONJOLI AJONJOLI DESCORTEZADO 250093.8 94375 1
AJONJOLI NATURAL 10702707.0 15867870 46
ALGODÓN ALGODON 12028250.9 200973442 62
ALGODON (BLANQUEADO) 52969.2 185857 1
ALGODON (EN PACAS) 35604.5 21805 1
ALGODON (PACAS) 48087.7 21830 1
ALGODON (SIN CARDAR NI PEINAR) 1934207.8 858309 10
ALGODON (SIN PEINAR NI CARDAR) 507479.4 238664 2
ALGODON BLANQUEADO 52658.4 175528 1
ALGODON SI CARDAR NI PEINAR 45158.1 19791 1
ALGODON SIN CARDAR NI PEINAR 8151960.6 19619672 36
ALGODON SIN PEINAR NI CARDAR 2879479.1 1354471 9
DESPERDICIO DE HILADOS DE ALGODON 32070.3 2148381 2
PACAS DE ALGODON 371093.7 196171 9
ALMIDON DE MAIZ ALMIDON (GLOBE AA SPV/25 KG) DE MAIZ 12500.0 20000 1
ALMIDON DE MAIZ 487747.5 872125 19
ALMIDON DE MAIZ (CORRUPAC) 13515.0 21250 1
ALMIDON DE MAIZ AA 7075.0 12500 1
ALMIDON DE MAIZ CORRUPAC 59038.5 105000 5
ALPISTE ALPISTE 54856.6 5048035 3
ARBOLES NATURALES SEMILLA DE TECA (TECTONA GRANDIS) 1388.6 60 1
SEMILLAS DE ARBOLES (Lluvia de oro y Papaya) 66.0 1 1
SEMILLAS DE ARBOLES (Lluvia de oro, Papaya y Strelizia) 127.6 22 1
ARROZ ARROZ 6111828.4 9988554 60
ARROZ (PARBOIL) 97606.0 11965890 2
ARROZ EN GRANO 20400.5 36114 4
ARROZ EN GRANZA 21791713.2 52447074 20
ARROZ EN ORO 55507.9 16873826 4
ARROZ ESCALDADO 240050.0 661234 10
ARROZ GRANZA 13883822.8 57978262 104
SUSTRATOS FIBRA DE COCO 78753.3 101682 4
FIBRA DE COCO (SUSTRATO) 117332.5 172140 7
FIBRA DE COCO TRATADA 132302.4 2770913 5
FIBRA DE ESTOPA DE COCO 375.0 6000 1
PEAT MOSS 655093.3 1226466 25
PEAT MOSS (BOLSAS DE ENRAIZADORES) 16425.0 48700 1
PEAT MOSS (SUSTRATO ) 3258.7 114288 1
PEAT MOSS (SUSTRATO DARK VEGETABLE MIX) 7151.8 23026 1
PEAT MOSS (SUSTRATO DE TURBA) 16068.0 71590 1
PEAT MOSS (SUSTRATO) 99434.2 263060 3
PEAT MOSS (TURBA) 213577.5 219207 3
PEAT MOSS SPHAGNUM (SUSTRATO DE TURBA) 15803.5 44000 1
PEAT SPHAGNUM 6905.0 21700 1
PEAT SPHAGNUM (SOD PEAT 0-20 NEUTRALIZED) 6870.5 22800 1
POLVO DE ESTOPA DE COCO 1750.0 8400 1
SUSTRATO ABONO DE TURBA 7795.6 22000 1
SUSTRATO DE COCO (COCOS NUCIFERA) 500.0 1004 1
SUSTRATO PEAT MOSS SPHAGNUM SPP (ABONO DE ORIGEN VEGETAL) 7900.2 25700 1
SUSTRATO SPAGNUM (MUSGO ESPANGINEO SECO) 12740.0 3185 1
TABACO EN RAMA SEMILLA DE TABACO 73396.5 10480 5
SEMILLAS DE TABACO 68060.4 35477 2
TELA DE YUTE SACO DE YUTE 42250.0 18200 1
SACO DE YUTE (40X28″ 460 grms/m2) 21624.0 15640 1
SACO DE YUTE (40×28″ 460 grms/m2) 43248.0 31280 2
SACOS DE YUTE 265198.1 669894 7
SACOS DE YUTE (28X40″ 750GR) 42250.0 18200 1
TELA DE YUTE 392247.7 307970 14
TRIGO EN ESTADO NATURAL SEMILLA DE TRIGO 300.0 20 2
TRIGO 201382.9 506000 24
TRIGO (ROJO SUAVE DE INVIERNO) 517598.6 1600000 2

1227 rows × 3 columns

In [24]:
maga_aduanas_pivot = maga_fitosanitario.pivot_table(
    index=["País origen", "Aduana"], 
    values=["CIF $", "Kg. Netos"],
    aggfunc={"CIF $":np.sum,"Kg. Netos":np.mean},
    fill_value=0)
maga_aduanas_pivot
Out[24]:
CIF $ Kg. Netos
País origen Aduana
ALEMANIA EXPRESS AEREO 102326.9 408.7
PUERTO QUETZAL 1727517.6 3000000.0
SANTO TOMAS DE CASTILLA 10050.2 16000.0
ARGENTINA PEDRO DE ALVARADO 3166.1 306817.0
PUERTO BARRIOS 163440.7 72900.0
PUERTO QUETZAL 187991.7 45965.1
SANTO TOMAS DE CASTILLA 410929.5 42113.6
AUSTRALIA EXPRESS AEREO 94350.0 2775.0
PUERTO QUETZAL 26932.2 21375.0
SANTO TOMAS DE CASTILLA 113750.0 3464.0
TECUN UMAN 5803.1 546201.0
Alemania EXPRESS AEREO 29503.2 48.5
Argentina SANTO TOMAS DE CASTILLA 15510.0 22000.0
BANGLADESH PUERTO QUETZAL 48274.4 16425.0
SANTO TOMAS DE CASTILLA 72000.0 537894.0
BELGICA EXPRESS AEREO 91348.9 1203.0
PUERTO QUETZAL 1855830.6 1500078.0
TECUN UMAN 192549.9 65179.2
BELICE MELCHOR DE MENCOS 547047.4 1097158.3
BOLIVIA PUERTO QUETZAL 91800.0 18000.0
BRASIL EXPRESS AEREO 121048.1 11588.5
PUERTO BARRIOS 245407.8 17108.0
SANTO TOMAS DE CASTILLA 3604767.2 382245.2
BURKINA FASO SANTO TOMAS DE CASTILLA 42888.0 19500.0
Belice MELCHOR DE MENCOS 45400.0 578402.5
CANADÁ EXPRESS AEREO 72.1 458.0
PUERTO BARRIOS 551903.1 51886.2
PUERTO QUETZAL 908538.0 175239.1
SANTO TOMAS DE CASTILLA 1231395.6 94833.4
CHAD PUERTO QUETZAL 35640.0 18000.0
PERÚ EXPRESS AEREO 2572758.1 12905.7
PUERTO QUETZAL 341275.7 14211.7
SANTO TOMAS DE CASTILLA 49007.5 5258.3
POLONIA EXPRESS AEREO 6366.9 30.0
PORTUGAL EXPRESS AEREO 667.3 12.0
Países Bajos EXPRESS AEREO 6890.2 40.0
SANTO TOMAS DE CASTILLA 586587.1 18211.0
Perú EXPRESS AEREO 2428.0 500.0
REINO UNIDO EXPRESS AEREO 225.2 42.0
REPÚBLICA DOMINICANA SANTO TOMAS DE CASTILLA 734869.1 1859816.9
SRI LANKA PUERTO QUETZAL 711008.5 52775.5
SANTO TOMAS DE CASTILLA 665303.2 381409.6
SUDÁFRICA EXPRESS AEREO 310826.5 271127.0
SUDÁN PUERTO QUETZAL 36826.8 12412.5
SUECIA EXPRESS AEREO 72927.0 392008.0
PUERTO QUETZAL 1827487.7 1500000.0
TAILANDIA EXPRESS AEREO 226567.5 16619.1
PUERTO QUETZAL 28765.0 1750.0
TAIWAN EXPRESS AEREO 205971.6 11966.5
VALLE NUEVO 1200.0 70.0
TANZANIA PUERTO QUETZAL 330340.0 20000.0
TURQUÍA EXPRESS AEREO 262.9 145.0
URUGUAY SANTO TOMAS DE CASTILLA 1485896.5 103641.5
UZBEKISTÁN SANTO TOMAS DE CASTILLA 106000.0 100240.0
Uruguay SANTO TOMAS DE CASTILLA 59007.8 108215.0
VENEZUELA PUERTO QUETZAL 13881240.0 254221.7
SANTO TOMAS DE CASTILLA 1185600.0 197600.0
VIETNAM EXPRESS AEREO 163930.0 10129.0
PUERTO QUETZAL 420550.0 19750.0
YEMEN PUERTO QUETZAL 167528.0 24300.0

186 rows × 2 columns

Que tal si indagamos mas en las categorias que se importan de cada país.

In [25]:
maga_aduanas_pivot = maga_fitosanitario.pivot_table(
    index=["País origen", "Aduana", "Categoría"], 
    values=["CIF $"], 
    aggfunc={"CIF $":np.sum},
    fill_value=0)
maga_aduanas_pivot
Out[25]:
CIF $
País origen Aduana Categoría
ALEMANIA EXPRESS AEREO ESQUEJES RIZOMAS BULBOS 72024.6
MATERIA PRIMA PARA ALIMENTOS 19900.5
SEMILLAS DE FLORES 475.8
SEMILLAS DE HORTALIZA 9926.0
PUERTO QUETZAL MALTA 1727517.6
SANTO TOMAS DE CASTILLA MALTA 10050.2
ARGENTINA PEDRO DE ALVARADO MAIZ PARA CONSUMO HUMANO 3166.1
PUERTO BARRIOS FRIJOL NEGRO 139899.7
FRIJOL PINTO 23541.0
PUERTO QUETZAL FRUTAS 60811.9
GRANOS 108570.0
SEMILLAS DE FLORES 18609.9
SANTO TOMAS DE CASTILLA GRANOS 171417.0
MAIZ PARA CONSUMO HUMANO 89333.0
MAIZ PARA ELAB DE CONCENTRADOS 34881.5
SEMILLAS DE FLORES 94778.0
SEMILLAS DE HORTALIZA 20520.0
AUSTRALIA EXPRESS AEREO SEMILLAS DE HORTALIZA 94350.0
PUERTO QUETZAL MADERA CEPILLADA 26932.2
SANTO TOMAS DE CASTILLA SEMILLAS DE HORTALIZA 113750.0
TECUN UMAN MADERA ASERRADA 5803.1
Alemania EXPRESS AEREO ESQUEJES RIZOMAS BULBOS 26028.2
SEMILLAS DE HORTALIZA 3475.0
Argentina SANTO TOMAS DE CASTILLA SEMILLAS DE FLORES 15510.0
BANGLADESH PUERTO QUETZAL TELA DE YUTE 48274.4
SANTO TOMAS DE CASTILLA TELA DE YUTE 72000.0
BELGICA EXPRESS AEREO SEMILLAS DE HORTALIZA 91348.9
PUERTO QUETZAL MALTA 1855830.6
TECUN UMAN ALMIDON DE MAIZ 10500.0
HARINA DE TRIGO 162327.3
SUDÁN PUERTO QUETZAL ESPECIAS 36826.8
SUECIA EXPRESS AEREO SEMILLAS DE HORTALIZA 72927.0
PUERTO QUETZAL MALTA 1827487.7
TAILANDIA EXPRESS AEREO ESQUEJES RIZOMAS BULBOS 10223.5
FLORES 4288.4
SEMILLAS DE FLORES 5.2
SEMILLAS DE FRUTAS 611.3
SEMILLAS DE HORTALIZA 210959.6
SEMOLA DE TRIGO 479.6
PUERTO QUETZAL SEMILLAS DE HORTALIZA 28765.0
TAIWAN EXPRESS AEREO ESQUEJES RIZOMAS BULBOS 1152.0
FLORES 27781.0
SEMILLAS DE FRUTAS 80970.4
SEMILLAS DE HORTALIZA 96068.2
VALLE NUEVO FLORES 1200.0
TANZANIA PUERTO QUETZAL SEMILLAS DE FLORES 330340.0
TURQUÍA EXPRESS AEREO SEMILLAS DE FLORES 223.7
SEMILLAS DE HORTALIZA 39.2
URUGUAY SANTO TOMAS DE CASTILLA ARROZ 463200.0
MADERA ASERRADA 902423.4
MADERA CEPILLADA 120273.1
UZBEKISTÁN SANTO TOMAS DE CASTILLA ARROZ 106000.0
Uruguay SANTO TOMAS DE CASTILLA MADERA CEPILLADA 59007.8
VENEZUELA PUERTO QUETZAL AJONJOLI 8910240.0
HORTALIZAS 4971000.0
SANTO TOMAS DE CASTILLA AJONJOLI 873600.0
HORTALIZAS 312000.0
VIETNAM EXPRESS AEREO SEMILLAS DE HORTALIZA 163930.0
PUERTO QUETZAL ESPECIAS 420550.0
YEMEN PUERTO QUETZAL ESPECIAS 167528.0

569 rows × 1 columns

In [26]:
maga_aduanas_pivot_top10 = maga_aduanas_pivot.sort_values("CIF $", ascending=False).head(10)
In [27]:
maga_aduanas_pivot_top10.plot(kind="barh")
<IPython.core.display.Javascript object>
Out[27]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fc53d5e0ac8>

Tambien es util mostrar la tabla, podemos ponerle un poco de estilo con la funcionalidad de Seaborn + Pandas

In [28]:
cm_paleta_verde = seaborn.light_palette("green", as_cmap=True)
s = maga_aduanas_pivot_top10.style.background_gradient(cmap=cm_paleta_verde)
s
Out[28]:
CIF $
País origen Aduana Categoría
ESTADOS UNIDOS PUERTO QUETZAL MAIZ PARA ELAB DE CONCENTRADOS 1.86755e+08
HARINA DE SOYA 5.61949e+07
ARROZ 3.27899e+07
SANTO TOMAS DE CASTILLA ALGODÓN 2.14909e+07
MEXICO TECUN UMAN HARINA DE TRIGO 1.86481e+07
VENEZUELA PUERTO QUETZAL AJONJOLI 8.91024e+06
ESTADOS UNIDOS PUERTO QUETZAL SOYA 8.52571e+06
FRUTAS 6.72475e+06
CHILE PUERTO QUETZAL MADERA ASERRADA 5.71528e+06
VENEZUELA PUERTO QUETZAL HORTALIZAS 4.971e+06
In [29]:
maga_aduanas_pivot = maga_fitosanitario.pivot_table(
    index=["País origen", "Aduana", "Categoría"], 
    values=["CIF $"], 
    aggfunc={"CIF $":np.sum},
    fill_value=0)
maga_aduanas_pivot
cm_paleta_verde = seaborn.light_palette("green", as_cmap=True)
s = maga_aduanas_pivot_top10.style.background_gradient(cmap=cm_paleta_verde)
s
Out[29]:
CIF $
País origen Aduana Categoría
ESTADOS UNIDOS PUERTO QUETZAL MAIZ PARA ELAB DE CONCENTRADOS 1.86755e+08
HARINA DE SOYA 5.61949e+07
ARROZ 3.27899e+07
SANTO TOMAS DE CASTILLA ALGODÓN 2.14909e+07
MEXICO TECUN UMAN HARINA DE TRIGO 1.86481e+07
VENEZUELA PUERTO QUETZAL AJONJOLI 8.91024e+06
ESTADOS UNIDOS PUERTO QUETZAL SOYA 8.52571e+06
FRUTAS 6.72475e+06
CHILE PUERTO QUETZAL MADERA ASERRADA 5.71528e+06
VENEZUELA PUERTO QUETZAL HORTALIZAS 4.971e+06
In [30]:
maga_fitosanitario
Out[30]:
Incidente Fecha Autorización Solicitante Permiso Producto Categoría CIF $ Kg. Netos Aduana País procedencia País origen Otra fuente de origen
0 49 2014-04-04 sodium-pasta-glucose-mexico 142432 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 125.0 1360779.0 MELCHOR DE MENCOS Belice Belice NaN
1 50 2014-04-04 sodium-pasta-glucose-mexico 142425 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 75.0 816467.0 MELCHOR DE MENCOS Belice Belice NaN
2 275 2014-07-04 robert-vermont-one-robert 142479 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
3 276 2014-07-04 robert-vermont-one-robert 142480 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
4 177 2014-07-04 zebra-missouri-arkansas-island 142478 HARINA DE TRIGO HARINA DE TRIGO 81601.2 151800.0 TECUN UMAN México México NaN
5 152 2014-07-04 beryllium-aspen-colorado-fish 142468 HARINA DE TRIGO HARINA DE TRIGO 11726.3 20866.0 SAN CRISTOBAL El Salvador El Salvador NaN
6 153 2014-07-04 beryllium-aspen-colorado-fish 142467 HARINA DE TRIGO HARINA DE TRIGO 11726.3 20866.0 SAN CRISTOBAL El Salvador El Salvador NaN
7 155 2014-07-04 beryllium-aspen-colorado-fish 142469 HARINA DE TRIGO HARINA DE TRIGO 11726.3 20866.0 SAN CRISTOBAL El Salvador El Salvador NaN
8 156 2014-07-04 beryllium-aspen-colorado-fish 142470 HARINA DE TRIGO HARINA DE TRIGO 11726.3 20866.0 SAN CRISTOBAL El Salvador El Salvador NaN
9 162 2014-07-04 robert-vermont-one-robert 142474 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
10 164 2014-07-04 robert-vermont-one-robert 142473 CASCARILLA DE ARROZ MATERIA PRIMA PARA CONCENTRADOS 2584.1 3483624.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
11 68 2014-07-04 kentucky-stream-crazy-winner 142440 CASCARILLA DE ARROZ MATERIA PRIMA PARA ALIMENTOS 500.0 16000.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
12 122 2014-07-04 echo-fillet-red-november 142463 MAIZ AMARILLO MAIZ PARA ELAB DE CONCENTRADOS 11250.0 68182.0 MELCHOR DE MENCOS Belice Belice NaN
13 123 2014-07-04 echo-fillet-red-november 142453 MAIZ AMARILLO MAIZ PARA ELAB DE CONCENTRADOS 11250.0 68182.0 MELCHOR DE MENCOS Belice Belice NaN
14 142 2014-07-04 montana-mockingbird-lactose-paris 142465 ARROZ PARBOIL ARROZ 49995.0 59875.0 SANTO TOMAS DE CASTILLA Estados Unidos Estados Unidos ORIGEN: ESTADO DE TEXAS.
15 467 2014-08-04 blue-alanine-aspen-ink 142545 MAIZ AMARILLO MAIZ PARA ELAB DE CONCENTRADOS 891909.3 3952402.0 PUERTO QUETZAL Estados Unidos Estados Unidos NaN
16 476 2014-08-04 august-alabama-william-black 142562 MAIZ AMARILLO MAIZ PARA ELAB DE CONCENTRADOS 156337.0 290316.0 SANTO TOMAS DE CASTILLA Estados Unidos Estados Unidos ORIGEN: ESTADO DE TEXAS.
17 530 2014-08-04 zebra-missouri-arkansas-island 142565 HARINA DE TRIGO HARINA DE TRIGO 81994.7 151800.0 TECUN UMAN MÓNACO MÓNACO NaN
18 352 2014-08-04 helium-jupiter-april-comet 142496 HARINA DE TRIGO HARINA DE TRIGO 10390.0 2268.0 TECUN UMAN México México NaN
19 353 2014-08-04 helium-jupiter-april-comet 142495 HARINA DE TRIGO HARINA DE TRIGO 10307.5 2268.0 TECUN UMAN México México NaN
20 354 2014-08-04 fifteen-venus-fruit-vermont 142494 HARINA DE TRIGO HARINA DE TRIGO 60564.0 13081.0 TECUN UMAN México México NaN
21 355 2014-08-04 king-one-saturn-nevada 142493 HARINA DE TRIGO HARINA DE TRIGO 61622.0 13081.0 TECUN UMAN México México NaN
22 295 2014-08-04 glucose-mike-magazine-table 142501 ARROZ GRANZA ARROZ 30055.3 71470.0 SAN CRISTOBAL EL SALVADOR ESTADOS UNIDOS ORIGEN: ESTADO DE LOUISIANA.
23 299 2014-08-04 cat-alabama-wisconsin-eleven 142500 ARROZ GRANZA ARROZ 454269.8 1093000.0 PUERTO QUETZAL ESTADOS UNIDOS ESTADOS UNIDOS NaN
24 342 2014-08-04 blossom-wyoming-lithium-stairway 142528 CASCARILLA DE ARROZ ARROZ 970.0 1363636.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
25 344 2014-08-04 blossom-wyoming-lithium-stairway 142526 CASCARILLA DE ARROZ ARROZ 970.0 1363636.0 PEDRO DE ALVARADO Nicaragua Nicaragua NaN
26 424 2014-08-04 helium-jupiter-april-comet 142523 HARINA DE TRIGO HARINA DE TRIGO 61094.2 13081.0 TECUN UMAN México México NaN
27 282 2014-08-04 massachusetts-stairway-fifteen-uniform 142498 ARROZ ARROZ 53000.0 100240.0 SANTO TOMAS DE CASTILLA UZBEKISTÁN UZBEKISTÁN NaN
28 448 2014-08-04 island-fish-chicken-purple 142540 HARINA DE TRIGO HARINA DE TRIGO 17990.0 31703.0 PEDRO DE ALVARADO El Salvador El Salvador NaN
29 450 2014-08-04 lion-paris-snake-floor 142550 HARINA DE TRIGO HARINA DE TRIGO 16992.5 31703.0 SAN CRISTOBAL El Salvador El Salvador NaN
7646 16472 2014-10-14 bravo-fish-king-carolina 148721 SEMILLA DE CHILE PIMIENTO Y TOMATE. SEMILLAS DE HORTALIZA 101.0 63.0 EXPRESS AEREO HOLANDA HOLANDA PAIS DE ORIGEN: CHINA Y HOLANDA.
7647 16484 2014-10-14 item-johnny-undress-william 148724 EJOTE FRANCES HORTALIZAS 4533.4 3878.0 SAN CRISTOBAL NICARAGUA NICARAGUA NaN
7648 16485 2014-10-14 cup-vermont-emma-johnny 148726 AJO HORTALIZAS 21332.3 26000.0 PUERTO QUETZAL CHINA CHINA NaN
7649 16486 2014-10-14 cup-vermont-emma-johnny 148725 AVENA EN HOJUELAS AVENA EN HOJUELAS 29357.6 52000.0 PUERTO QUETZAL CHILE CHILE NaN
7650 16487 2014-10-14 avocado-island-oxygen-two 148728 AGUACATE HASS FRUTAS 30438.0 23040.0 TECUN UMAN MEXICO MEXICO NaN
7651 16488 2014-10-14 friend-papa-delaware-bacon 148723 MANDARINA FRUTAS 2500.0 24000.0 LA MESILLA MEXICO MEXICO NaN
7652 16490 2014-10-14 island-earth-july-quebec 148729 GRAÑONES DE MAIZ (MAIZ AMARILLO SIN GERMEN) MAIZ PARA CONSUMO HUMANO 13850.8 19278.0 PUERTO BARRIOS ESTADOS UNIDOS ESTADOS UNIDOS ORIGEN: ESTADO DE ILLINOIS.
7653 16491 2014-10-14 island-earth-july-quebec 148730 GRAÑONES DE MAIZ (MAIZ AMARILLO SIN GERMEN) MAIZ PARA CONSUMO HUMANO 13850.8 19278.0 PUERTO BARRIOS ESTADOS UNIDOS ESTADOS UNIDOS ORIGEN: ESTADO DE ILLINOIS.
7654 16492 2014-10-14 ink-emma-fillet-maryland 148734 MANDARINA FRUTAS 1250.0 12000.0 LA MESILLA MEXICO MEXICO NaN
7655 16493 2014-10-14 ink-emma-fillet-maryland 148733 MANDARINA FRUTAS 2500.0 24000.0 LA MESILLA MEXICO MEXICO NaN
7656 16494 2014-10-14 six-low-bluebird-burger 148732 GLUTEN VITAL DE TRIGO MATERIA PRIMA PARA ALIMENTOS 2886.2 1000.0 TECUN UMAN MEXICO MEXICO NaN
7657 16495 2014-10-14 spaghetti-sad-queen-london 148737 MADERA ASERRADA DE PINO (TRATADA CON CCA) MADERA ASERRADA 19622.2 21602.0 AGUA CALIENTE HONDURAS HONDURAS NaN
7658 16496 2014-10-14 spaghetti-sad-queen-london 148731 MADERA ASERRADA DE PINO (TRATADA CON CCA) MADERA ASERRADA 15313.9 22405.0 AGUA CALIENTE HONDURAS HONDURAS NaN
7659 16500 2014-10-14 robert-berlin-march-pasta 148741 NARANJAS FRUTAS 12500.0 113635.0 ENTRE RIOS HONDURAS HONDURAS NaN
7660 16501 2014-10-14 robert-berlin-march-pasta 148740 NARANJAS FRUTAS 12500.0 113635.0 ENTRE RIOS HONDURAS HONDURAS NaN
7661 16502 2014-10-14 robert-berlin-march-pasta 148738 NARANJAS FRUTAS 15000.0 136362.0 ENTRE RIOS HONDURAS HONDURAS NaN
7662 16503 2014-10-14 robert-berlin-march-pasta 148739 NARANJAS FRUTAS 12500.0 113635.0 ENTRE RIOS HONDURAS HONDURAS NaN
7663 16504 2014-10-14 robert-berlin-march-pasta 148742 NARANJAS FRUTAS 12500.0 113635.0 ENTRE RIOS HONDURAS HONDURAS NaN
7664 16505 2014-10-14 robert-berlin-march-pasta 148743 NARANJAS FRUTAS 12500.0 113635.0 ENTRE RIOS HONDURAS HONDURAS NaN
7665 16506 2014-10-14 juliet-india-fourteen-music 148744 AGUACATE HASS FRUTAS 19000.0 20900.0 TECUN UMAN MEXICO MEXICO NaN
7666 16520 2014-10-14 lion-violet-lactose-robin 148735 SEMILLAS DE CEBOLLA SEMILLAS DE HORTALIZA 100.0 12.0 EXPRESS AEREO ESTADOS UNIDOS ESTADOS UNIDOS ORIGEN: ESTADO DE CALIFORNIA.
7667 16533 2014-10-14 leopard-september-mars-alabama 148745 MADERA DE PINO (SECA) MADERA ASERRADA 145393.9 241260.0 SANTO TOMAS DE CASTILLA BRASIL BRASIL NaN
7668 16534 2014-10-14 iowa-florida-cup-massachusetts 148747 UVAS FRUTAS 31138.0 13500.0 PUERTO QUETZAL ESTADOS UNIDOS ESTADOS UNIDOS ORIGEN: ESTADO DE CALIFORNIA.
7669 16537 2014-10-14 low-vermont-lactose-happy 148748 FRIJOL NEGRO (PARTIDO) FRIJOL NEGRO 50757.4 843696.0 PUERTO QUETZAL MEXICO MEXICO NaN
7670 16538 2014-10-14 alaska-high-steak-florida 148749 UVAS FRUTAS 29380.0 15200.0 PUERTO QUETZAL ESTADOS UNIDOS ESTADOS UNIDOS ORIGEN: ESTADO DE CALIFORNIA.
7671 16539 2014-10-14 alaska-high-steak-florida 148750 CAMOTE FRUTAS 1929.0 284091.0 AGUA CALIENTE HONDURAS HONDURAS NaN
7672 16540 2014-10-14 alaska-high-steak-florida 148751 GUAYABA FRUTAS 4115.4 170455.0 AGUA CALIENTE HONDURAS HONDURAS NaN
7673 16454 2014-10-14 colorado-aspen-romeo-oscar 148722 SEMILLA DE TOMATE SEMILLAS DE HORTALIZA 35.9 595.0 EXPRESS AEREO FRANCIA FRANCIA NaN
7674 11783 2014-10-14 missouri-harry-beer-social 148746 SEMILLA DE PEPINO (VARIEDAD SLICING) SEMILLAS DE HORTALIZA 105.0 399.0 EXPRESS AEREO ESTADOS UNIDOS MEXICO NaN
7675 14742 2014-10-14 charlie-violet-fish-ceiling 148736 SEMILLAS DE MELON, CALABAZA Y SANDIA SEMILLAS DE HORTALIZA 114179.4 681.0 EXPRESS AEREO ISRAEL ISRAEL PAIS DE ORIGEN: ISRAEL, CHILE Y CHINA.

7676 rows × 12 columns

In [31]:
maga_fitosanitario.groupby("Solicitante").sum().sort_values("CIF $", ascending=False).head(10)
Out[31]:
Permiso CIF $ Kg. Netos
Solicitante
papa-cola-cat-utah 2613794 51617483.5 2142316240.0
crazy-december-charlie-leopard 5407306 42385422.8 129173159.0
blue-alanine-aspen-ink 3914255 36726112.8 115987664.0
glucose-network-cardinal-december 1734642 19912544.7 47940184.0
butter-ceiling-uncle-salami 1448580 18986878.8 1276069585.0
nineteen-earth-stairway-nebraska 1738702 16256532.0 66034754.0
fanta-crazy-rugby-salami 8771752 15806525.0 19943562.0
september-red-hamper-ten 3044223 13971536.0 61956905.0
east-cup-summer-mango 2611047 12101661.5 39276980.0
oklahoma-sodium-nevada-four 12670668 9444222.0 100425831.0
In [32]:
maga_fitosanitario.pivot_table(
    index=["Solicitante", "País origen", "Categoría"], 
    values=["CIF $"], 
    aggfunc={"CIF $":np.sum},
    fill_value=0).sort_values("CIF $", ascending=False).head(10)
Out[32]:
CIF $
Solicitante País origen Categoría
papa-cola-cat-utah ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 34161962.8
crazy-december-charlie-leopard ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 28967653.8
blue-alanine-aspen-ink ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 20603138.9
papa-cola-cat-utah ESTADOS UNIDOS HARINA DE SOYA 17455520.7
glucose-network-cardinal-december ESTADOS UNIDOS ARROZ 17135432.4
nineteen-earth-stairway-nebraska ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 16256532.0
butter-ceiling-uncle-salami ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 14778445.5
crazy-december-charlie-leopard ESTADOS UNIDOS HARINA DE SOYA 12628533.6
september-red-hamper-ten ESTADOS UNIDOS MAIZ PARA ELAB DE CONCENTRADOS 10279335.3
fanta-crazy-rugby-salami VENEZUELA AJONJOLI 9783840.0
In [33]:
maga_fitosanitario.pivot_table(
    index=["País procedencia"],
    columns=["Aduana"],
    values=["CIF $"], 
    aggfunc={"CIF $":np.sum},
    fill_value=0).style.background_gradient(cmap=cm_paleta_verde)
Out[33]:
CIF $
Aduana AGUA CALIENTE EL CEIBO EL FLORIDO ENTRE RIOS EXPRESS AEREO FARDOS POSTALES LA ERMITA LA MESILLA MELCHOR DE MENCOS PEDRO DE ALVARADO PUERTO BARRIOS PUERTO QUETZAL SAN CRISTOBAL SANTO TOMAS DE CASTILLA TECUN UMAN VALLE NUEVO ZONA FRANCA DE GUATEMALA
País procedencia
ALEMANIA 0 0 0 0 102327 0 0 0 0 0 0 1.72752e+06 0 1.60688e+06 0 0 0
ARGENTINA 0 0 0 0 0 0 0 0 0 0 163441 187992 0 410929 0 0 0
AUSTRALIA 0 0 0 0 94350 0 0 0 0 0 0 26932.2 0 113750 0 0 0
Alemania 0 0 0 0 29503.2 0 0 0 0 0 0 0 0 0 0 0 0
Argentina 0 0 0 0 0 0 0 0 0 0 0 0 0 15510 0 0 0
BANGLADESH 0 0 0 0 0 0 0 0 0 0 0 48274.4 0 72000 0 0 0
BELGICA 0 0 0 0 0 0 0 0 0 0 0 1.85583e+06 0 0 192550 0 0
BELICE 0 0 0 0 0 0 0 0 547047 0 0 0 0 0 0 0 0
BOLIVIA 0 0 0 0 0 0 0 0 0 0 0 91800 0 0 0 0 0
BRASIL 0 0 0 0 121048 0 0 0 0 0 245408 0 0 3.58179e+06 0 0 0
BURKINA FASO 0 0 0 0 0 0 0 0 0 0 0 0 0 42888 0 0 0
Belice 0 0 0 0 0 0 0 0 45400 0 0 0 0 0 0 0 0
CANADÁ 0 0 0 0 72.11 0 0 0 0 0 551903 1.18703e+06 0 1.2314e+06 0 0 0
CHAD 0 0 0 0 0 0 0 0 0 0 0 77317.2 0 224059 0 0 0
CHILE 0 0 0 0 22150 0 0 0 0 5984.01 0 1.45996e+07 0 1.14601e+06 0 0 0
CHINA 0 0 0 0 35594.8 0 0 0 0 0 0 1.04992e+06 0 0 0 0 0
CHIPRE 0 0 0 0 3532.2 0 0 0 0 0 0 0 0 0 0 0 0
COLOMBIA 0 0 0 0 1.06184e+06 0 0 0 0 0 0 74263.4 0 233124 14780 0 0
COMORAS 0 0 0 0 2264.65 0 0 0 0 0 0 0 0 118725 0 0 0
COREA DEL SUR 0 0 0 0 231.2 0 0 0 0 0 0 0 0 0 0 0 0
COSTA RICA 0 0 0 0 2.51694e+06 0 0 0 0 595022 0 0 17022 0 0 0 0
Canadá 0 0 0 0 0 0 0 0 0 0 11320.3 0 0 22257.6 0 0 0
Chile 0 0 0 0 0 0 0 0 0 0 0 175952 0 0 0 0 0
China 0 0 0 0 0 0 0 0 0 0 0 49415 0 0 0 0 0
Colombia 0 0 0 0 10632.4 0 0 0 0 0 0 0 0 0 0 0 0
Costa Rica 0 0 0 0 304 0 0 0 0 0 0 0 0 0 0 0 0
ECUADOR 0 0 0 0 11121.1 0 0 0 0 0 0 0 0 0 0 0 0
EL SALVADOR 0 0 0 0 3380.89 0 0 0 0 3.15808e+06 0 0 1.75932e+07 0 0 19318.5 0
EMIRATOS ÁRABES UNIDOS 0 0 0 0 0 0 0 0 0 40834.8 15141.7 0 93246 0 0 0 0
ESPAÑA 0 0 0 0 31056.8 0 0 0 0 8929.65 0 0 0 71187.6 0 0 0
ESTADOS UNIDOS 0 0 0 0 6.74779e+06 781.92 0 0 0 452500 4.97125e+06 2.97986e+08 62815.5 3.63083e+07 0 0 0
ESTONIA 0 0 0 0 268577 0 0 0 0 0 0 2.37419e+06 0 618034 0 0 0
El Salvador 0 0 0 0 0 0 0 0 0 50653.3 0 0 159023 0 0 0 0
Estados Unidos 0 36.04 0 0 87632.5 0 0 0 0 0 177068 3.87267e+06 0 922944 0 0 0
Estonia 0 0 0 0 0 0 0 0 0 0 0 0 0 19145.3 0 0 0
FILIPINAS 0 0 0 0 1536 0 0 0 0 0 0 0 0 0 0 0 0
FRANCIA 0 0 0 0 121993 0 0 0 0 0 627655 0 0 1.29225e+06 0 0 0
GHANA 0 0 0 0 0 0 0 0 0 0 0 0 0 105007 0 0 0
GUATEMALA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95511
HOLANDA 0 0 0 0 6.99672e+06 0 0 0 0 5560 0 0 0 737879 3200 0 0
HONDURAS 1.04949e+06 0 1.11446e+06 1.89727e+06 18000 0 0 0 0 78172.1 0 0 0 0 0 0 0
HUNGRÍA 31815.6 0 0 45528.7 0 0 0 0 0 0 0 0 0 0 0 0 0
Honduras 70359.8 0 0 40300 0 0 0 0 0 0 0 0 0 0 0 0 0
INDIA 0 0 0 0 4650 0 0 0 0 0 0 789181 0 233004 0 0 0
ISRAEL 0 0 0 0 607326 0 0 0 0 0 0 0 0 0 0 0 0
ITALIA 0 0 0 0 24330.3 0 0 0 0 0 0 0 0 0 0 0 0
Israel 0 0 0 0 15891.7 0 0 0 0 0 0 0 0 0 0 0 0
JAPÓN 0 0 0 0 5499.54 0 0 0 0 0 0 43739.8 0 0 0 0 0
KENIA 0 0 0 0 10197.1 0 0 0 0 0 0 0 0 0 0 0 0
LAOS 0 0 0 0 0 0 0 0 0 0 8688.74 0 0 0 0 0 0
LATVIA 0 0 0 0 0 0 0 0 0 0 8693.31 0 0 54261.1 0 0 0
LETONIA 0 0 0 0 0 0 0 0 0 0 0 0 0 15052 0 0 0
LITUANIA 0 0 0 0 0 0 0 0 0 0 0 0 0 149491 0 0 0
MEXICO 0 0 0 0 33359.8 0 0 166788 0 0 0 675200 0 97502.1 2.49166e+07 0 0
MÓNACO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303410 0 0
México 0 0 0 0 0 0 0 1600 0 0 0 0 0 0 1.0659e+06 0 0
NAMIBIA 0 0 0 0 0 0 0 0 0 1940 0 0 0 0 0 0 0
NICARAGUA 0 0 0 0 1924.52 0 113631 0 0 4.06068e+06 0 0 547838 0 0 0 0
NIGERIA 0 0 0 0 0 0 0 0 0 130254 27383.8 0 19189.1 0 0 0 0
NUEVA ZELANDA 0 0 0 0 0 0 0 0 0 0 0 240022 0 47682 0 0 0
Nicaragua 0 0 0 0 0 0 12091 0 0 122190 0 0 28500.5 0 0 0 0
PANAMÁ 0 0 0 0 1957.53 0 0 0 0 0 0 0 20556 0 0 0 0
PERÚ 0 0 0 0 95392.9 0 0 0 0 0 0 341276 0 47076.6 0 0 0
POLONIA 0 0 0 0 6366.9 0 0 0 0 0 0 0 0 0 0 0 0
PORTUGAL 0 0 0 0 667.32 0 0 0 0 0 0 0 0 0 0 0 0
Países Bajos 0 0 0 0 6890.24 0 0 0 0 0 0 0 0 586587 0 0 0
Perú 0 0 0 0 2428 0 0 0 0 0 0 0 0 0 0 0 0
REINO UNIDO 0 0 0 0 3112.17 0 0 0 0 0 0 0 0 0 0 0 0
REPÚBLICA DOMINICANA 0 0 0 0 0 0 0 0 0 0 0 0 0 734869 0 0 0
SRI LANKA 0 0 0 0 0 0 0 0 0 0 0 711009 0 665303 0 0 0
SUDÁN 0 0 0 0 0 0 0 0 0 0 0 36826.8 0 0 0 0 0
SUECIA 0 0 0 0 0 0 0 0 0 0 0 1.82749e+06 0 0 0 0 0
TAILANDIA 0 0 0 0 133412 0 0 0 0 0 0 28765 0 0 0 0 0
TAIWAN 0 0 0 0 331696 0 0 0 0 0 0 0 0 0 0 0 0
TANZANIA 0 0 0 0 0 0 0 0 0 0 0 330340 0 0 0 0 0
URUGUAY 0 0 0 0 0 0 0 0 0 0 0 0 0 1.4859e+06 0 0 0
UZBEKISTÁN 0 0 0 0 0 0 0 0 0 0 0 0 0 106000 0 0 0
Uruguay 0 0 0 0 0 0 0 0 0 0 0 0 0 59007.8 0 0 0
VENEZUELA 0 0 0 0 0 0 0 0 0 0 0 1.38812e+07 0 1.1856e+06 0 0 0
VIETNAM 0 0 0 0 0 0 0 0 0 0 0 420550 0 0 0 0 0
YEMEN 0 0 0 0 0 0 0 0 0 0 0 167528 0 0 0 0 0

Que tal si queremos obtener el precio por kilogramo de cada producto y en base a eso obtener los productos mas ‘preciosos’.

In [35]:
maga_fitosanitario.to_csv("MAGA - CERTIFICADOS FITOSANITARIOS - LIMPIO.csv")

Introducción a Pandas y Jupyter Notebook de Python

- el junio 28, 2017 en DAL, Fuentes de datos, Tutoriales, Uncategorized

Ese tutorial y documentación detallados en Jupyter Notebook fueron escritos por Sebastián Oliva, fellow 2017 de Escuela de Datos por Guatemala. En el webinar lanzado el 28 de junio puedes seguir paso a paso este ejercicio de limpieza y análisis de datos.

Introducción

Este es el primero de varios tutoriales introductorios al procesamiento y limpieza de datos. En este estaremos usando como ambiente de trabajo a Jupyter, que permite crear documentos con código y prosa, además de almacenar resultados de las operaciones ejecutadas (cálculos, graficas, etc). Jupyter permite interactuar con varios lenguajes de programación, en este, usaremos Python, un lenguaje de programación bastante simple y poderoso, con acceso a una gran variedad de librerias para procesamiento de datos. Entre estas, está Pandas, una biblioteca que nos da acceso a estructuras de datos muy poderosas para manipular datos.

¡Comenzemos entonces!

Instalación

Para poder ejecutar este Notebook, necesitas tener instalado Python 3, el cual corre en todos los sistemas operativos actuales, sin embargo, para instalar las dependencias: Pandas y Jupyter.

Modo Sencillo

Recomiendo utilizar la distribución Anaconda https://www.continuum.io/downloads en su versión para Python 3, esta incluye instalado Jupyter, Pandas, Numpy y Scipy, y mucho otro software útil. Sigue las instrucciones en la documentación de Anaconda para configurar un ambiente de desarollo con Jupyter.
https://docs.continuum.io/anaconda/navigator/getting-started.html

Una vez instalado, prueba a seguir los paso de https://www.tutorialpython.com/modulos-python/ o tu tutorial de Python Favorito.

«It’s a Unix System, I know This!» – Modo Avanzado

Te recomiendo utilizar Python 3.6 o superior, instalar la version mas reciente posible de virtualenv y pip. Usa Git para obtener el codigo, crea un nuevo entorno de desarollo y ahi instala las dependencias necesarias.

~/$ cd notebooks
~/notebooks/$ git clone https://github.com/tian2992/notebooks_dateros.git
~/notebooks/$ cd notebooks_dateros/
~/notebooks/notebooks_dateros/$ 
~/notebooks/notebooks_dateros/$ virtualenv venv/
~/notebooks/notebooks_dateros/$ source venv/bin/activate
~/notebooks/notebooks_dateros/$ pip install -r requirements.txt
~/notebooks/notebooks_dateros/$ cd 01-Intro
~/notebooks/notebooks_dateros/$ 7z e municipal_guatemala_2008-2011.7z
~/notebooks/notebooks_dateros/$ jupyter-notebook

Primeros pasos

In [5]:
## En Jupyter Notebooks existen varios tipos de celdas, las celdas de código, como esta:
print(1+1)
print(5+4)
6+4
2
9
Out[5]:
10

Y las celdas de texto, que se escriben en Markdown y son hechas para humanos. Pueden incluir negritas, itálicas Entre otros tipos de estilos. Tambien pueden incluirse imagenes o incluso interactivos.

In [6]:
%pylab inline
import seaborn as sns
import pandas as pd
pd.set_option('precision', 5)
Populating the interactive namespace from numpy and matplotlib

Con estos comandos, cargamos a nuestro entorno de trabajo las librerias necesarias.

Usemos la funcion de pandas read_csv para cargar los datos. Esto crea un DataFrame, una unidad de datos en Pandas, que nos da mucha funcionalidad y tiene bastantes propiedades convenientes para el análisis. Probablemente esta operación tome un tiempo asi que sigamos avanzando, cuando esté lista, verás que el numero de la celda habrá sido actualizado.

In [7]:
muni_data = pd.read_csv("GUATEMALA MUNICIPAL 2008-2011.csv", 
                        sep=";")
/home/tian/OPENDATA/MUNICIPALIDADES/venv/lib/python3.6/site-packages/IPython/core/interactiveshell.py:2698: DtypeWarning: Columns (19) have mixed types. Specify dtype option on import or set low_memory=False.
  interactivity=interactivity, compiler=compiler, result=result)
In [11]:
muni_data.head()
Out[11]:
ANNO ADMINISTRACIÓN MUNICIPIO DEPTO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
0 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.137,400.00 Q.137,400.00 Q.137,400.00
1 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
2 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
3 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.240,000.00 Q.49,588.00 Q.49,588.00 Q.49,588.00
4 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-

5 rows × 21 columns

DataFrames y más

Aqui podemos ver el dataframe que creamos.
En Pandas, los DataFrames son unidades básicas, junto con las Series.

Veamos una serie muy sencilla antes de pasar a evaluar muni_data, el DataFrame que acabamos de crear. Crearemos una serie de numeros aleatorios, y usaremos funciones estadisticas para analizarlo.

In [10]:
serie_prueba_s = pd.Series(np.random.randn(5), name='prueba')

print(serie_prueba_s)

print(serie_prueba_s.describe())

serie_prueba_s.plot()
0   -0.50246
1    0.90772
2    1.37897
3    2.56289
4    0.07101
Name: prueba, dtype: float64
count    5.00000
mean     0.88363
std      1.18822
min     -0.50246
25%      0.07101
50%      0.90772
75%      1.37897
max      2.56289
Name: prueba, dtype: float64
Out[10]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f0764326780>

Con esto podemos ver ya unas propiedades muy interesantes. Las series están basadas en el concepto estadistico, pero incluyen un título (del eje), un índice (el cual identifica a los elementos) y el dato en sí, que puede ser numerico (float), string unicode (texto) u otro tipo de dato.

Las series estan basadas tambien en conceptos de vectores, asi que se pueden realizar operaciones vectoriales en las cuales implicitamente se alinean los indíces, esto es muy util por ejemplo para restar dos columnas, sin importar el tamaño de ambas, automaticamente Pandas unirá inteligentemente ambas series. Puedes tambien obtener elementos de las series por su valor de índice, o por un rango, usando la notación usual en Python. Como nota final, las Series comparten mucho del comportamiento de los NumPy Arrays, haciendolos instantaneamente compatibles con muchas librerias y recursos. https://pandas.pydata.org/pandas-docs/stable/dsintro.html#series

In [13]:
serie_prueba_d = pd.Series(np.random.randn(5), name='prueba 2')

print(serie_prueba_d)

print(serie_prueba_d[0:3]) # Solo los elementos del 0 al 3

# Esto funciona porque ambas series tienen indices en común.
# Si sumamos dos con tamaños distintos, los espacios vacios son marcados como NaN
serie_prueba_y = serie_prueba_d + (serie_prueba_s * 2)
print(serie_prueba_y)
print("La suma de la serie y es: {suma}".format(suma=serie_prueba_y.sum()))
0   -0.88087
1    0.78036
2    1.91407
3   -0.28563
4    0.13854
Name: prueba 2, dtype: float64
0   -0.88087
1    0.78036
2    1.91407
Name: prueba 2, dtype: float64
0   -1.88578
1    2.59579
2    4.67201
3    4.84014
4    0.28056
dtype: float64
La suma de la serie y es: 10.502719345870334

Pasemos ahora a DataFrames, como nuestro muni_data DataFrame. Los DataFrames son estructuras bi-dimensionales de datos. Son muy usadas porque proveen una abstracción similar a una hoja de calculo o a una tabla de SQL. Los DataFrame tienen índices (etiquetas de fila) y columnas, ambos ejes deben encajar, y el resto será llenado de datos no validos.

Por ejemplo podemos unir ambas series y crear un DataFrame nuevo, usando un diccionario de Python, por ejemplo. Tambien podemos graficar los resultados.

In [14]:
prueba_dict = {
                        "col1": serie_prueba_s,
                        "col2": serie_prueba_d,
                        "col3": [1, 2, 3, 4, 0]
             }
prueba_data_frame = pd.DataFrame(prueba_dict)
print(prueba_data_frame)
# La operacion .sum() ahora retorna un DataFrame, pero Pandas sabe no combinar peras con manzanas.
print("La suma de cada columna es: \n{suma}".format(suma=prueba_data_frame.sum())) 
prueba_data_frame.plot()
      col1     col2  col3
0 -0.50246 -0.88087     1
1  0.90772  0.78036     2
2  1.37897  1.91407     3
3  2.56289 -0.28563     4
4  0.07101  0.13854     0
La suma de cada columna es: 
col1     4.41813
col2     1.66646
col3    10.00000
dtype: float64
Out[14]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f076e7ec518>

Veamos ahora ya, nuestro DataFrame creado con los datos, muni_data.

In [61]:
#muni_data
Out[61]:
ANNO ADMINISTRACIÓN MUNICIPIO DEPTO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
0 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.137,400.00 Q.137,400.00 Q.137,400.00
1 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
2 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
3 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.240,000.00 Q.49,588.00 Q.49,588.00 Q.49,588.00
4 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
5 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.16,000.00 Q.16,000.00 Q.16,000.00
6 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.1,750.00 Q.1,500.00 Q.1,500.00
7 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica Q.26,000.00 Q.2,750.00 Q.2,750.00 Q.2,750.00
8 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.250.00 Q.250.00 Q.250.00
9 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
10 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.250.00 Q.250.00 Q.250.00
11 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 029 – Otras Remuneraciones De Personal Temporal 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.44,740.00 Q.44,740.00 Q.44,740.00
12 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 029 – Otras Remuneraciones De Personal Temporal 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.58,250.00 Q.58,250.00 Q.58,250.00
13 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 029 – Otras Remuneraciones De Personal Temporal 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
14 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 029 – Otras Remuneraciones De Personal Temporal 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.12,650.00 Q.12,650.00 Q.12,650.00
15 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 031 – Jornales 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
16 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.15,700.00 Q.17,900.00 Q.15,900.00
17 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.11,750.00 Q.10,995.53 Q.10,995.53
18 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.21,000.00 Q.5,500.00 Q.5,500.00 Q.5,500.00
19 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
20 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.2,000.00 Q.2,250.00 Q.2,250.00
21 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 196 – Servicios De Atención Y Protocolo 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.15,000.00 Q.14,908.12 Q.14,908.12
22 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 199 – Otros Servicios No Personales 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.6,000.00 Q.11,969.50 Q.11,958.50 Q.11,958.50
23 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 211 – Alimentos Para Personas 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.3,000.00 Q.- Q.- Q.-
24 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 211 – Alimentos Para Personas 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.28,000.00 Q.27,992.74 Q.27,992.74
25 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 211 – Alimentos Para Personas 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.5,000.00 Q.4,994.45 Q.4,994.45
26 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 21 Gastos Corrientes 415 – Vacaciones Pagadas Por Retiro 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.1,500.00 Q.1,500.00 Q.- Q.-
27 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.24,000.00 Q.24,000.00 Q.1,000.00 Q.1,000.00
28 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 015 – Complementos Específicos Al Personal Per… 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.3,713.37 Q.3,713.37 Q.125.00 Q.125.00
29 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 051 – Aporte Patronal Al Igss 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.3,000.00 Q.3,000.00 Q.- Q.-
674105 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 286 – Herramientas Menores No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 4 – MEJORAMIENTO MATERIALES DE CONSTRUCCION ME… 1 – MEJORAMIENTO MATERIALES DE CONSTRUCCION ME… Q.2,500.00 Q.649.00 NaN Q.649.00
674106 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 154 – Arrendamiento De Maquinaria Y Equipo De … No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 5 – AMPLIACION MURO PERIMETRAL CEMENTERIO MUNI… 1 – AMPLIACION MURO PERIMETRAL CEMENTERIO MUNI… Q.150,000.00 Q.- NaN Q.-
674107 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 154 – Arrendamiento De Maquinaria Y Equipo De … No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 5 – AMPLIACION MURO PERIMETRAL CEMENTERIO MUNI… 1 – AMPLIACION MURO PERIMETRAL CEMENTERIO MUNI… Q.150,000.00 Q.- NaN Q.-
674108 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 189 – Otros Estudios Y/O Servicios No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.60,000.00 Q.- NaN Q.-
674109 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 189 – Otros Estudios Y/O Servicios No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.60,000.00 Q.- NaN Q.-
674110 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 214 – Productos Agroforestales, Madera, Corcho… No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.10,000.00 Q.- NaN Q.-
674111 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 214 – Productos Agroforestales, Madera, Corcho… No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.10,000.00 Q.- NaN Q.-
674112 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 223 – Piedra, Arcilla Y Arena No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.5,000.00 Q.- NaN Q.-
674113 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 224 – Pómez, Cal Y Yeso No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.3,000.00 Q.- NaN Q.-
674114 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 267 – Tintes, Pinturas Y Colorantes No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.4,000.00 Q.- NaN Q.-
674115 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 268 – Productos Plásticos, Nylon, Vinil Y P.V.C. No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.20,000.00 Q.- NaN Q.-
674116 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 268 – Productos Plásticos, Nylon, Vinil Y P.V.C. No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.20,000.00 Q.- NaN Q.-
674117 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 272 – Productos De Vidrio No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.5,000.00 Q.- NaN Q.-
674118 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 273 – Productos De Loza Y Porcelana No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.15,000.00 Q.- NaN Q.-
674119 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 274 – Cemento No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.5,500.00 Q.- NaN Q.-
674120 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 275 – Productos De Cemento, Pómez, Asbesto Y Yeso No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.33,500.00 Q.- NaN Q.-
674121 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 275 – Productos De Cemento, Pómez, Asbesto Y Yeso No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.34,000.00 Q.- NaN Q.-
674122 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 281 – Productos Siderúrgicos No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.5,000.00 Q.- NaN Q.-
674123 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 284 – Estructuras Metálicas Acabadas No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.25,000.00 Q.- NaN Q.-
674124 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 297 – Útiles, Accesorios Y Materiales Eléctricos No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.15,000.00 Q.- NaN Q.-
674125 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 297 – Útiles, Accesorios Y Materiales Eléctricos No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.15,000.00 Q.- NaN Q.-
674126 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 329 – Otras Maquinarias Y Equipos No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.21,000.00 Q.- NaN Q.-
674127 2011 Municipal ZACAPA ZACAPA ZACAPA 07 – URBANIZACION Y SERVICIOS COMUNITARIOS 0706 – Urbanización y servicios comunitarios n… 070601-Urbanización y servicios comunitarios n… 22 Gastos de Capital 329 – Otras Maquinarias Y Equipos No Aplica No Aplica 19 – MEJORAMIENTO DE INFRAESTRUCTURA 0 – SIN SUB PROGRAMA 6 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA 1 – MEJORAMIENTO EDIFICIO(S) MUNICIPAL, ZACAPA Q.34,000.00 Q.- NaN Q.-
674128 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1201 – Intereses y comisiones de la deuda pública 120101-Intereses y comisiones de la deuda pública 23 Aplicaciones Financieras 731 – Intereses Por Préstamos Del Sector Privado No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 1 – AMORTIZACION PRESTAMO VIVIBANCO Q.- Q.204,049.00 NaN Q.204,049.00
674129 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1201 – Intereses y comisiones de la deuda pública 120101-Intereses y comisiones de la deuda pública 23 Aplicaciones Financieras 731 – Intereses Por Préstamos Del Sector Privado No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 1 – AMORTIZACION PRESTAMO VIVIBANCO Q.3,695,000.00 Q.3,743,544.00 NaN Q.3,717,234.12
674130 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1201 – Intereses y comisiones de la deuda pública 120101-Intereses y comisiones de la deuda pública 23 Aplicaciones Financieras 751 – Amortización De Préstamos a Largo Plazo … No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 1 – AMORTIZACION PRESTAMO VIVIBANCO Q.812,000.00 Q.812,100.00 NaN Q.812,037.53
674131 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1202 – Amortizaciones de deuda pública 120201-Amortizaciones de deuda pública 23 Aplicaciones Financieras 769 – Disminución De Otras Cuentas A Pagar A L… No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 2 – PAGO CONVENIO PLAN DE PRESTACIONES Q.165,000.00 Q.357,352.00 NaN Q.357,351.15
674132 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1202 – Amortizaciones de deuda pública 120201-Amortizaciones de deuda pública 23 Aplicaciones Financieras 769 – Disminución De Otras Cuentas A Pagar A L… No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 2 – PAGO CONVENIO PLAN DE PRESTACIONES Q.- Q.114,305.00 NaN Q.114,304.65
674133 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1202 – Amortizaciones de deuda pública 120201-Amortizaciones de deuda pública 23 Aplicaciones Financieras 769 – Disminución De Otras Cuentas A Pagar A L… No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 3 – INTRODUCCION ENERGIA ELECTRICA ALDEA GUACA… Q.15,000.00 Q.15,000.00 NaN Q.15,000.00
674134 2011 Municipal ZACAPA ZACAPA ZACAPA 12 – TRANSACCIONES DE LA DEUDA PUBLICA 1202 – Amortizaciones de deuda pública 120201-Amortizaciones de deuda pública 23 Aplicaciones Financieras 769 – Disminución De Otras Cuentas A Pagar A L… No Aplica No Aplica 99 – DEUDA MUNICICPAL 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 4 – AMORTIZACION DEUDA DEL PROYECTO AMPLIACION… Q.- Q.18,534.00 NaN Q.18,533.57

674135 rows × 21 columns

In [15]:
# Una grafica bastante inutil, ¿porque?

muni_data.plot()
Out[15]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f076e6ab7f0>
In [16]:
# Veamos los datos, limitamos a solo los primeros 5 filas.

muni_data.head(5)
Out[16]:
ANNO ADMINISTRACIÓN MUNICIPIO DEPTO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
0 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.137,400.00 Q.137,400.00 Q.137,400.00
1 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
2 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-
3 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica Q.240,000.00 Q.49,588.00 Q.49,588.00 Q.49,588.00
4 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica Q.- Q.- Q.- Q.-

5 rows × 21 columns

In [17]:
## La columna 'APROBADO' se ve un poco sospechosa.
## Python toma a los numeros como números, no con una Q ni un punto (si no lo tiene) ni comas innecesarias. 
## Veamos mas a detalle.

muni_data['APROBADO'].head()
Out[17]:
0            Q.-   
1            Q.-   
2            Q.-   
3     Q.240,000.00 
4            Q.-   
Name: APROBADO, dtype: object
In [110]:
# Vamos a ignorar esto por un momento, pero los números de verdad son de tipo float

Veamos cuantas columnas son, podemos explorar un poco mas asi.

In [65]:
muni_data.columns
Out[65]:
Index(['ANNO', 'ADMINISTRACIÓN', 'MUNICIPIO', 'DEPTO', 'MUN', 'FUNC1', 'FUNC2',
       'FUNC3', 'ECON1', 'ECON2', 'ORIGEN1', 'ORIGEN2', 'ORIGEN3', 'PROGRAMA1',
       'PROGRAMA2', 'PROYECTO1', 'PROYECTO2', 'APROBADO', 'RETRASADO',
       'EJECUTADO', 'PAGADO'],
      dtype='object')
In [19]:
muni_data['MUNICIPIO'].unique()[:5] # Listame 5 municipios
Out[19]:
array(['SACATEPEQUEZ', 'GUATEMALA', 'JUTIAPA', 'SAN MARCOS', 'ZACAPA'], dtype=object)
In [67]:
print("Funcion 1: \n {func1} \n Funcion 2: \n {func2} \n Funcion 3: \n{func3}".format(
        func1=muni_data["FUNC1"].unique(), 
        func2=muni_data["FUNC2"].unique(),
        func3=muni_data["FUNC3"].unique()
        )
     )
Funcion 1: 
 ['1 - ADMINISTRACION GENERAL' '3 - SERVICIOS SOCIALES'
 '2 - DEFENSA Y SEGURIDAD INTERNA' 'Sin Finalidad'
 '4 - SERVICIOS ECONOMICOS' '5 - DEUDA PUBLICA'
 '6 - OTROS NO CLASIFICABLES' '01 - SERVICIOS PUBLICOS GENERALES'
 '08 - SALUD' '07 - URBANIZACION Y SERVICIOS COMUNITARIOS'
 '05 - ASUNTOS ECONOMICOS' '06 - PROTECCION AMBIENTAL' '10 - EDUCACION'
 '12 - TRANSACCIONES DE LA DEUDA PUBLICA'
 '03 - ORDEN PUBLICO Y SEGURIDAD CIUDADANA'
 '09 - ACTIVIDADES DEPORTIVAS, RECREATIVAS, CULTURA Y RELIGION'
 '11 - PROTECCION SOCIAL' '04 - ATENCION A DESASTRES Y GESTION DE RIESGOS'
 '02 - DEFENSA'] 
 Funcion 2: 
 ['109 - OTRAS ACTIVIDADES DE ADMINISTRACION' '306-AGUA Y SANEAMIENTO'
 '309-MEDIO AMBIENTE' '303-EDUCACION' '202-SEGURIDAD INTERNA'
 '304-CULTURA Y DEPORTES' '301-SALUD Y ASISTENCIA SOCIAL' 'Sin Funcion'
 '404-TRANSPORTE' '405-INDUSTRIA  Y  COMERCIO'
 '409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS'
 '106-ADMINISTRACION FISCAL' '406-TURISMO'
 '310-OTRAS ACTIVIDADES DE SERVICIOS SOCIALES' '402-ENERGIA'
 '403-COMUNICACIONES' '302-TRABAJO Y PREVISION SOCIAL'
 '107-AUDITORIA Y CONTROL' '501-INTERESES, COMISIONES Y OTROS GASTOS'
 '201-DEFENSA' '601-AMORTIZACION DE DEUDA' '407-AGROPECUARIO'
 '101-LEGISLATIVA' '307-VIVIENDA' '308-DESARROLLO URBANO Y RURAL'
 '401-MINERIA E HIDROCARBUROS' '408-FINANCIERAS Y SEGUROS'
 '602-DISMINUCION DE OTROS PASIVOS' '603-OTROS GASTOS'
 '103-DIRECCION GUBERNAMENTAL' '108-SERVICIOS GENERALES'
 '104-RELACIONES INTERIORES' '102-JUDICIAL' '305-CIENCIA Y TECNOLOGIA'
 '105-RELACIONES EXTERIORES'
 '0101 - Administracion legislative, ejecutiva y asuntos exteriores'
 '0803 - Servicios hospitalarios' '0703 - Abastecimiento de agua'
 '0502 - Agricultura, produccion pecuaria, silvicultura, caza y pesca'
 '0505 - Transporte' '0602 - Ordenación de aguas residuales'
 '0702 - Desarrollo comunitario' '1002 - Educación media'
 '1001 - Educación preprimaria y primaria'
 '0805 - Investigación y desarrollo relacionados con la Salud'
 '0503 - Combustibles y energia'
 '1201 - Intereses y comisiones de la deuda pública'
 '1202 - Amortizaciones de deuda pública'
 '0102 - Administracion fiscal, monetaria y servicios de fiscalizacion'
 '0501 - Asuntos económicos y comerciales en general'
 '0104 - Servicios generales' '0107 - Servicios públicos generales n.c.d'
 '0302 - Administración de justicia'
 '0301 - Servicios de policía y seguridad ciudadana'
 '0901 - Servicios deportivos y de recreación '
 '0906 - Actividades deportivas, recreativas, cultura y religión n.c.d. (SC)'
 '0705 - Investigación y desarrollo relacionados con urbanización y servicios comunitarios'
 '0106 - Investigación y desarrollo relacionados con los servicios públicos generales'
 '0606 - Protección ambiental n.c.d' '0601 - Ordenación de desechos'
 '1104 - Familia e hijos' '0704 - Alumbrado público' '1102 - Edad avanzada'
 '0902 - Servicios culturales (SI)' '0806 - Salud n.c.d'
 '0804 - Servicios de salud pública' '0701 - Urbanizacion'
 '0507 - Otras actividades economicas y financieras'
 '0303 - Defensoría pública penal y de los derechos humanos'
 '1005 - Educación no atribuible a ningún nivel escolarizado'
 '0105 - Investigación básica'
 '0604 - Protección de la diversidad biológica y del paisaje'
 '0404 - Atención a Desastres  y Gestión de Riesgos n.c.d'
 '0401 - Servicios de prevención y control de incendios, y servicios de rescate y auxilio'
 '1007 - Investigación y desarrollo relacionados con la educación'
 '1008 - Educación n.c.d' '0603 - Reducción de la contaminación'
 '0402 - Gestión prospectiva de riesgos a desastres'
 '0706 - Urbanización y servicios comunitarios n.c.d' '1106 - Vivienda'
 '0504 - Mineria, manufacturas y construccion' '0201 - Defensa militar'
 '0802 - Servicios para paciente externos'
 '1003 - Educación postmedia básica y diversificada no universitaria o superior'
 '0903 - Servicios de radio y televisión y servicios editoriales (SC)'
 '0605 - Investigación y desarrollo relacionados con la protección ambiental'
 '1004 - Educación universitaria o superior'
 '0103 - Ayuda economica exterior' '1109 - Protección social n.c.d'
 '0506 - Comunicaciones' '0801 - Productos, utiles y equipos medicos'
 '0509 - Asuntos económicos n.c.d'
 '0307 - Orden público y seguridad ciudadana  n.c.d' '0202 - Defensa civil'
 '0904 - Servicios religiosos y otros servicios comunitarios (SC)'
 '1006 - Servicios auxiliares de la educación '
 '0905 - Investigación y desarrollo relacionados con el esparcimiento, cultura y  religión'
 '1107 - Otros riesgos de exclusión social'
 '1101 - Enfermedad, funcionamiento corporal y discapacidad'
 '0403 - Investigación y desarrollo relacionados con la  Atención a Desastres  y Gestión de Riesgos'
 '1103 - Sobrevivientes (pensionados)' '0205 - Defensa n.c.d.'
 '0508 - Investigación y desarrollo relacionados con asuntos económicos'
 '1105 - Desempleo'
 '0306 - Investigación y desarrollo relacionados con el orden público y seguridad ciudadana'
 '0304 - Administración de asuntos penitenciarios'] 
 Funcion 3: 
['Sin Division' '010102-Ejecutiva'
 '080303-Servicios médicos y de centros de maternidad'
 '070301-Abastecimiento de agua' '050204-Producción pecuaria (SC)'
 '050501-Transporte por carretera' '060201-Ordenación de aguas residuales'
 '070201-Desarrollo comunitario' '100201-Educación básica'
 '100102-Educación primaria' '100103-Alfabetización'
 '080501-Investigación y desarrollo relacionados con la Salud'
 '050306-Electricidad' '120101-Intereses y comisiones de la deuda pública'
 '120201-Amortizaciones de deuda pública' '010101-Legislativa'
 '010201-Asuntos fiscales' '050103-Asuntos laborales generales'
 '010402-Servicios generales de planificación'
 '010203-Servicios de fiscalización' '010404-Otros servicios generales'
 '010701-Servicios públicos generales n.c.d' '050202-Silvicultura'
 '050101-Asuntos económicos y comerciales en general'
 '030201-Administración de justicia'
 '030101-Servicios de policía y seguridad ciudadana'
 '100101-Educación preprimaria' '100202-Educación diversificada'
 '090101-Servicios deportivos (SI)'
 '090601-Actividades deportivas, recreativas, cultura y religión n.c.d. (SC)'
 '070501-Investigación y desarrollo relacionados con urbanización y servicios comunitarios'
 '010601-Investigación y desarrollo relacionados con los servicios públicos generales'
 '060601-Protección ambiental n.c.d' '060101-Ordenación de desechos'
 '110401-Familia e hijos' '070401-Alumbrado público' '110201-Edad avanzada'
 '090201-Servicios culturales (SI)' '050302-Petróleo y gas natural'
 '080601-Salud n.c.d' '080401-Servicios de salud pública'
 '090102-Servicios de recreación (SI)' '070101-Urbanizacion'
 '010401-Administración general del recurso humano'
 '050701-Comercio, distribución, almacenamiento y depósito'
 '030301-Defensoría pública penal'
 '100501-Educación no atribuible a ningún nivel escolarizado'
 '010501-Investigación básica'
 '050505-Transporte por oleoductos y gasoductos' '050201-Agricultura'
 '060401-Protección de la diversidad biológica y del paisaje'
 '080301-Servicios hospitalarios generales'
 '040401-Atención a Desastres  y Gestión de Riesgos n.c.d'
 '040101-Servicios de prevención y control de incendios, y servicios de rescate y auxilio'
 '100701-Investigación y desarrollo relacionados con la educación'
 '100801-Educación n.c.d' '010202-Asuntos monetarios'
 '060301-Reducción de la contaminación'
 '040201-Gestión prospectiva de riesgos a desastres'
 '070601-Urbanización y servicios comunitarios n.c.d' '110601-Vivienda'
 '050402-Manufacturas' '020101-Defensa militar'
 '010403-Servicios generales de estadística'
 '080201-Servicios médicos generales'
 '100301-Educación postmedia básica y diversificada no universitaria o superior'
 '090301-Servicios de radio y televisión y servicios editoriales (SC)'
 '060501-Investigación y desarrollo relacionados con la protección ambiental'
 '100401-Primera etapa de la educación universitaria o superior'
 '010301-Ayuda económica a los países en desarrollo y en transición'
 '050506-Otros sistemas de transporte'
 '040202-Gestión correctiva o compensatoria de desastres'
 '110901-Protección social n.c.d' '050601-Comunicaciones'
 '080101-Productos farmacéuticos' '010103-Asuntos exteriores'
 '080302- Servicios hospitalarios especializados' '050403-Construcción'
 '050102-Supervisión financiera' '050901-Asuntos económicos n.c.d'
 '030701-Orden público y seguridad ciudadana  n.c.d' '020201-Defensa civil'
 '050707-Proyectos de desarrollo polivalentes'
 '090401-Servicios religiosos y otros servicios comunitarios (SC)'
 '080202-Servicios médicos especializados' '080204-Servicios paramédicos'
 '100601-Servicios auxiliares de la educación preprimaria y primaria'
 '080103-Aparatos y equipos terapéuticos'
 '090501-Investigación y desarrollo relacionados con el esparcimiento, cultura y  religión'
 '080102-Otros productos médicos'
 '050401-Extracción de recursos minerales excepto los combustibles minerales'
 '110701-Otros riesgos de exclusión social'
 '100603-Servicios auxiliares de la educación postmedia básica y diversificada no universitaria o superior'
 '050502-Transporte por agua'
 '050301-Carbón y otros combustibles minerales sólidos' '110101-Enfermedad'
 '080203-Servicios odontológicos'
 '040301-Investigación y desarrollo relacionados con la  Atención a Desastres  y Gestión de Riesgos'
 '110901-Investigación y desarrollo relacionados con la Protección Social'
 '100402-Segunda etapa de la educación universitaria o superior'
 '050203-Caza y pesca' '050303-Combustibles nucleares'
 '050307-Energía no eléctrica' '050704-Intermediación financiera'
 '110301-Sobrevivientes (pensionados)' '050305-Otros combustibles'
 '020501-Defensa n.c.d.'
 '080304-Servicios de salud y residencias a personas de la tercera edad y residencias de convalecencia'
 '050702-Hoteles y restaurantes' '050703-Turismo'
 '050801-Investigación y desarrollo relacionados con asuntos económicos, comerciales y laborales en general'
 '030302-Defensoría de los derechos humanos' '110501-Desempleo'
 '050805-Investigación y desarrollo relacionados con el transporte'
 '050803-Investigación y desarrollo relacionados con combustibles y energía'
 '110102-Funcionamiento corporal y discapacidad' '050706-Seguros y fianzas'
 '050504-Transporte aéreo'
 '030601-Investigación y desarrollo relacionados con el orden público y seguridad ciudadana'
 '050503-Transporte por ferrocarril'
 '030401-Administración de asuntos penitenciarios'
 '100602-Servicios auxiliares de la educación media'
 '100604-Servicios auxiliares de la educación universitaria o superior'
 '010302-Ayuda económica prestada a través de organismos internacionales'
 '050802-Investigación y desarrollo relacionados con agricultura, producción pecuaria, silvicultura, caza y p']

Vamos a explorar un poco con indices y etiquetas:

In [27]:
index_geo_data = muni_data.set_index("DEPTO","MUNICIPIO").sort_index()
In [30]:
index_geo_data.loc[
                    ["GUATEMALA","ESCUINTLA","SACATEPEQUEZ"],
                    ['FUNC1','FUNC2','FUNC3','APROBADO','EJECUTADO']
                  ].head()
Out[30]:
FUNC1 FUNC2 FUNC3 APROBADO EJECUTADO
DEPTO
GUATEMALA 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010102-Ejecutiva Q.34,180.00 NaN
GUATEMALA 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010102-Ejecutiva Q.42,000.00 NaN
GUATEMALA 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010102-Ejecutiva Q.42,000.00 NaN
GUATEMALA 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010102-Ejecutiva Q.320,000.00 NaN
GUATEMALA 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010102-Ejecutiva Q.1,000.00 NaN

Ahora que podemos realizar selección basica, pensamos, que podemos hacer con estos datos, y nos enfrentamos a un problema…

In [31]:
muni_data['APROBADO'][3] * 2
Out[31]:
' Q.240,000.00  Q.240,000.00 '

¡Rayos! porque no puedo manipular estos datos así como los otros, y es porque son de tipo texto y no números.

In [71]:
# muni_data['APROBADO'].sum() ## No correr, falla...

Necesitamos crear una funcion para limpiar estos tipos de dato que son texto, para poderlos convertir a numeros de tipo punto flotante (decimales).

In [33]:
## Esto es una funcion en Python, con def definimos el nombre de esta funcion, 'clean_q'
## esta recibe un objeto de entrada.

def clean_q(input_object):
    from re import sub  ## importamos la función sub, que substituye utilizando patrones
    ## https://es.wikipedia.org/wiki/Expresión_regular
    
    ## NaN es un objeto especial que representa un valor numérico invalido, Not A Number.
    if input_object == NaN:
        return 0
    inp = unicode(input_object) # De objeto a un texto
    cleansed_q = sub(r'Q\.','', inp) # Remueve Q., el slash evita que . sea interpretado como un caracter especial
    cleansed_00 = sub(r'\.00', '', cleansed_q) # Igual aqui
    cleansed_comma = sub(',', '', cleansed_00)
    cleansed_dash = sub('-', '', cleansed_comma)
    cleansed_nonchar = sub(r'[^0-9]+', '', cleansed_dash)
    if cleansed_nonchar == '':
        return 0
    return cleansed_nonchar
In [34]:
presupuesto_aprobado = muni_data['APROBADO'].map(clean_q).astype(float)
In [35]:
presupuesto_aprobado.describe()
Out[35]:
count    6.74135e+05
mean     3.64625e+05
std      8.43016e+06
min      0.00000e+00
25%      0.00000e+00
50%      1.00000e+03
75%      1.50000e+04
max      1.43719e+09
Name: APROBADO, dtype: float64
In [36]:
muni_data['EJECUTADO'].head()
Out[36]:
0     Q.137,400.00 
1            Q.-   
2            Q.-   
3      Q.49,588.00 
4            Q.-   
Name: EJECUTADO, dtype: object
In [37]:
muni_data['FUNC1'].str.upper().value_counts()
Out[37]:
1 - ADMINISTRACION GENERAL                                      150541
01 - SERVICIOS PUBLICOS GENERALES                               107911
SIN FINALIDAD                                                   100862
3 - SERVICIOS SOCIALES                                           96451
4 - SERVICIOS ECONOMICOS                                         65763
07 - URBANIZACION Y SERVICIOS COMUNITARIOS                       40349
05 - ASUNTOS ECONOMICOS                                          38126
10 - EDUCACION                                                   18584
06 - PROTECCION AMBIENTAL                                        17359
09 - ACTIVIDADES DEPORTIVAS, RECREATIVAS, CULTURA Y RELIGION     11929
03 - ORDEN PUBLICO Y SEGURIDAD CIUDADANA                          7137
08 - SALUD                                                        5707
12 - TRANSACCIONES DE LA DEUDA PUBLICA                            3470
11 - PROTECCION SOCIAL                                            3338
6 - OTROS NO CLASIFICABLES                                        2565
2 - DEFENSA Y SEGURIDAD INTERNA                                   1662
04 - ATENCION A DESASTRES Y GESTION DE RIESGOS                    1179
5 - DEUDA PUBLICA                                                 1073
02 - DEFENSA                                                       129
Name: FUNC1, dtype: int64
In [77]:
presupuesto_aprobado.plot()
Out[77]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7e5ff55860>

Bueno, ahora ya tenemos estas series de datos convertidas. ¿como las volvemos a agregar al dataset? ¡Facil! lo volvemos a insertar al DataFrame original, sobreescribiendo esa columna.

In [38]:
for col in ('APROBADO', 'RETRASADO', 'EJECUTADO', 'PAGADO'):
    muni_data[col] = muni_data[col].map(clean_q).astype(float)
In [39]:
muni_data['APROBADO'].sum()
Out[39]:
245806713741.0
In [40]:
muni_data.head()
Out[40]:
ANNO ADMINISTRACIÓN MUNICIPIO DEPTO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
0 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 137400.0 137400.0 137400.0
1 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
2 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
3 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 240000.0 49588.0 49588.0 49588.0
4 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0

5 rows × 21 columns

In [81]:
muni_data['ECON1'].unique()
Out[81]:
array(['21 Gastos Corrientes', '22 Gastos de Capital',
       '23 Aplicaciones Financieras'], dtype=object)

Ahora si, ¡ya podemos agrupar y hacer indices bien!

In [41]:
index_geo_data = muni_data.set_index("DEPTO","MUNICIPIO").sort_index()
In [42]:
index_geo_data.head(40)
Out[42]:
ANNO ADMINISTRACIÓN MUNICIPIO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN1 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
DEPTO
ALTA VERAPAZ 2011 Municipal CAHABON CAHABON 01 – SERVICIOS PUBLICOS GENERALES 0101 – Administracion legislative, ejecutiva y… 010101-Legislativa 21 Gastos Corrientes 062 – Dietas Para Cargos Representativos No Aplica No Aplica No Aplica 1 – ACTIVIDADES CENTRALES 0 – SIN SUB PROGRAMA 0 – SIN PPROYECTO 1 – CONCEJO MUNICIPAL 169600.0 169600.0 0.0 16798750.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 10450.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 301-SALUD Y ASISTENCIA SOCIAL Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 4520.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 301-SALUD Y ASISTENCIA SOCIAL Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 1020.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 301-SALUD Y ASISTENCIA SOCIAL Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 5792.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 301-SALUD Y ASISTENCIA SOCIAL Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 1002062.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 301-SALUD Y ASISTENCIA SOCIAL Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 17122.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 20215.0 20215.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 74690.0 14965.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 18000.0 18000.0 1254260.0 1254260.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 86006.0 86006.0 86006.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 402-ENERGIA Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 6790.0 6790.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 90000.0 3344064.0 31119.0 31119.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 34225.0 34225.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 225716.0 225716.0 225716.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 30000.0 30000.0 30000.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 306-AGUA Y SANEAMIENTO Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 142960.0 14689711.0 14689711.0 14689711.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 30 Recursos Propios De Las Instituciones 32 Dismin Caja Y Bancos Entidades Descentraliz… No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 6930.0 6930.0 6930.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 30 Recursos Propios De Las Instituciones 32 Dismin Caja Y Bancos Entidades Descentraliz… No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 6930.0 6930.0 6930.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 17360.0 17360.0 17360.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 1830.0 1830.0 1830.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 50000.0 114525.0 114525.0 114525.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 332 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 107250.0 110061.0 110061.0 110061.0
ALTA VERAPAZ 2009 Municipal CHISEC CHISEC 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 22 Gastos de Capital 274 – Cemento 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 40978.0 40978.0 40978.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 332 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 15128612.0 137539.0 137539.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 332 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 94374.0 94374.0 94374.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 1000000.0 4997703.0 49029.0 49029.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 98130.0 98130.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 197305.0 5874280.0 5874280.0 5874280.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 264085.0 82105.0 5933880.0 5933880.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 171 – Mantenimiento Y Reparación De Edificios 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 51060.0 51810.0 51809.0 51809.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 622320.0 622320.0 41598604.0 41598604.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 84729875.0 581251.0 581251.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 803365.0 803365.0 723122.0 723122.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 42256696.0 42256696.0 42256696.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 4 – SERVICIOS ECONOMICOS 409-OTRAS ACTIVIDADES DE SERVICIOS ECONOMICOS Sin Division 22 Gastos de Capital 331 – Construcciones De Bienes Nacionales De U… 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 229250.0 229250.0 2664521.0 2664521.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 022 – Personal Por Contrato 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 15000.0 14181.0 14181.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 332 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 20.0 0.0 0.0
ALTA VERAPAZ 2009 Municipal CHAHAL CHAHAL 3 – SERVICIOS SOCIALES 303-EDUCACION Sin Division 22 Gastos de Capital 332 – Construcciones De Bienes Nacionales De U… 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 8219.0 0.0 0.0
In [44]:
mi_muni_d = muni_data.set_index(["ANNO"],["DEPTO","MUNICIPIO"],["FUNC1","ECON1","ORIGEN1"]).sort_index()
In [45]:
mi_muni_d.head()
Out[45]:
ADMINISTRACIÓN MUNICIPIO DEPTO MUN FUNC1 FUNC2 FUNC3 ECON1 ECON2 ORIGEN1 ORIGEN2 ORIGEN3 PROGRAMA1 PROGRAMA2 PROYECTO1 PROYECTO2 APROBADO RETRASADO EJECUTADO PAGADO
ANNO
0 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 137400.0 137400.0 137400.0
1 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 20 Recursos Del Tesoro Con Afectación Especifica 21 Ingresos Tributarios Iva Paz No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
2 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 20 Recursos Del Tesoro Con Afectación Especifica 22 Ingresos Ordinarios De Aporte Constitucional No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
3 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 30 Recursos Propios De Las Instituciones 31 Ingresos Propios No Aplica No Aplica No Aplica No Aplica No Aplica 240000.0 49588.0 49588.0 49588.0
4 2008 Municipal ALOTENANGO SACATEPEQUEZ ALOTENANGO 1 – ADMINISTRACION GENERAL 109 – OTRAS ACTIVIDADES DE ADMINISTRACION Sin Division 21 Gastos Corrientes 011 – Personal Permanente 40 Credito Interno 42 Préstamos Internos No Aplica No Aplica No Aplica No Aplica No Aplica 0.0 0.0 0.0 0.0
In [85]:
## Para obtener mas ayuda, ejecuta:
# help(mi_muni_d)
In [46]:
mi_muni_d.columns
Out[46]:
Index(['ADMINISTRACIÓN', 'MUNICIPIO', 'DEPTO', 'MUN', 'FUNC1', 'FUNC2',
       'FUNC3', 'ECON1', 'ECON2', 'ORIGEN1', 'ORIGEN2', 'ORIGEN3', 'PROGRAMA1',
       'PROGRAMA2', 'PROYECTO1', 'PROYECTO2', 'APROBADO', 'RETRASADO',
       'EJECUTADO', 'PAGADO'],
      dtype='object')
In [47]:
mi_muni_d["DEPTO"].describe()
Out[47]:
count        674135
unique           22
top       GUATEMALA
freq          55520
Name: DEPTO, dtype: object
In [48]:
year_grouped = mi_muni_d.groupby("ANNO").sum()
In [49]:
year_grouped
Out[49]:
APROBADO RETRASADO EJECUTADO PAGADO
ANNO
2008 2.68353e+10 2.45634e+11 4.14921e+11 4.12270e+11
2009 5.31561e+10 2.99390e+11 4.81259e+11 4.77409e+11
2010 7.32193e+10 3.28068e+11 0.00000e+00 5.26614e+11
2011 9.25959e+10 3.39514e+11 0.00000e+00 5.42302e+11
In [50]:
year_dep_grouped = mi_muni_d.groupby(["ANNO","DEPTO"]).sum()
year_dep_grouped.head()

sns.set(style="whitegrid")

# Draw a nested barplot to show survival for class and sex
g = sns.factorplot( data=year_dep_grouped,
                   size=6, kind="bar", palette="muted")
# g.despine(left=True)
g.set_ylabels("cantidad")
Out[50]:
<seaborn.axisgrid.FacetGrid at 0x7f076e5f5fd0>
In [91]:
year_dep_grouped.head()
Out[91]:
APROBADO RETRASADO EJECUTADO PAGADO
ANNO DEPTO
2008 ALTA VERAPAZ 2.78291e+09 1.46371e+10 1.63018e+10 1.61846e+10
BAJA VERAPAZ 6.13609e+08 6.77458e+09 6.57817e+09 6.56299e+09
CHIMALTENANGO 9.42927e+08 8.63124e+09 1.30331e+10 1.30252e+10
CHIQUIMULA 5.74758e+08 7.30016e+09 7.62139e+09 7.59232e+09
EL PROGRESO 3.53643e+08 5.29144e+09 7.06977e+09 7.03881e+09

Contestando preguntas

Ahora ya podemos contestar algunas clases de preguntas agrupando estas entradas individuales de de datos.
¿Que tal el departamento que tiene mas gasto en Seguridad? ¿Los tipos de gasto mas elevados como suelen ser pagados?

In [92]:
year_grouped.plot()
Out[92]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7e5fe45a90>
In [51]:
year_dep_group = mi_muni_d.groupby(["DEPTO","ANNO"]).sum()
In [94]:
year_dep_group.unstack().head()
Out[94]:
APROBADO RETRASADO EJECUTADO PAGADO
ANNO 2008 2009 2010 2011 2008 2009 2010 2011 2008 2009 2010 2011 2008 2009 2010 2011
DEPTO
ALTA VERAPAZ 2.78291e+09 5.64744e+09 1.95357e+10 2.12952e+10 1.46371e+10 2.09176e+10 3.22332e+10 3.77961e+10 1.63018e+10 2.18337e+10 0.0 0.0 1.61846e+10 2.15977e+10 2.06492e+10 2.38565e+10
BAJA VERAPAZ 6.13609e+08 1.93412e+09 1.55609e+09 3.10721e+09 6.77458e+09 7.40240e+09 9.37046e+09 1.15378e+10 6.57817e+09 7.00557e+09 0.0 0.0 6.56299e+09 6.97541e+09 8.10811e+09 1.04986e+10
CHIMALTENANGO 9.42927e+08 2.36969e+09 2.95906e+09 2.63505e+09 8.63124e+09 9.65804e+09 9.83285e+09 8.07592e+09 1.30331e+10 1.19265e+10 0.0 0.0 1.30252e+10 1.17757e+10 1.27430e+10 1.25867e+10
CHIQUIMULA 5.74758e+08 7.94670e+08 2.40722e+09 3.12491e+09 7.30016e+09 7.01026e+09 9.74311e+09 8.95407e+09 7.62139e+09 7.77514e+09 0.0 0.0 7.59232e+09 7.68196e+09 9.47250e+09 9.48921e+09
EL PROGRESO 3.53643e+08 9.42015e+08 1.98337e+09 2.09171e+09 5.29144e+09 6.41684e+09 6.02155e+09 6.51524e+09 7.06977e+09 7.01621e+09 0.0 0.0 7.03881e+09 6.94013e+09 8.77785e+09 8.27554e+09
In [52]:
func_p = mi_muni_d.groupby(["FUNC1"]).sum()
func_dep = mi_muni_d.groupby(["FUNC1","DEPTO"]).sum()
func_p
Out[52]:
APROBADO RETRASADO EJECUTADO PAGADO
FUNC1
01 – SERVICIOS PUBLICOS GENERALES 2.12896e+10 9.39864e+10 0.00000e+00 1.46451e+11
02 – DEFENSA 7.65149e+06 4.85768e+07 0.00000e+00 1.15252e+08
03 – ORDEN PUBLICO Y SEGURIDAD CIUDADANA 1.54112e+09 4.62692e+09 0.00000e+00 9.71618e+09
04 – ATENCION A DESASTRES Y GESTION DE RIESGOS 2.02693e+08 1.46343e+09 0.00000e+00 1.90633e+09
05 – ASUNTOS ECONOMICOS 3.53597e+10 1.16573e+11 0.00000e+00 1.08795e+11
06 – PROTECCION AMBIENTAL 6.82913e+09 2.43591e+10 0.00000e+00 3.15289e+10
07 – URBANIZACION Y SERVICIOS COMUNITARIOS 2.35510e+10 9.90229e+10 0.00000e+00 1.12771e+11
08 – SALUD 1.79933e+09 6.12886e+09 0.00000e+00 7.90331e+09
09 – ACTIVIDADES DEPORTIVAS, RECREATIVAS, CULTURA Y RELIGION 2.02757e+09 1.08670e+10 0.00000e+00 1.33765e+10
1 – ADMINISTRACION GENERAL 2.22609e+10 1.53756e+11 2.87329e+11 2.86671e+11
10 – EDUCACION 7.38670e+09 2.92963e+10 0.00000e+00 3.05241e+10
11 – PROTECCION SOCIAL 6.06386e+08 7.10021e+09 0.00000e+00 1.26944e+10
12 – TRANSACCIONES DE LA DEUDA PUBLICA 1.94713e+10 6.97031e+10 0.00000e+00 8.69565e+10
2 – DEFENSA Y SEGURIDAD INTERNA 2.69279e+08 1.41168e+09 1.11557e+10 1.11701e+10
3 – SERVICIOS SOCIALES 2.46567e+10 1.48437e+11 2.16065e+11 2.13887e+11
4 – SERVICIOS ECONOMICOS 2.27707e+10 1.67108e+11 2.47066e+11 2.43517e+11
5 – DEUDA PUBLICA 2.54276e+09 1.80157e+10 2.89121e+10 2.89121e+10
6 – OTROS NO CLASIFICABLES 6.22515e+09 4.34632e+10 9.32827e+10 9.31423e+10
Sin Finalidad 4.70091e+10 2.17238e+11 1.23702e+10 5.18558e+11
In [97]:
func_dep_flat = func_dep.unstack()
In [98]:
func_dep_flat.head()
Out[98]:
APROBADO PAGADO
DEPTO ALTA VERAPAZ BAJA VERAPAZ CHIMALTENANGO CHIQUIMULA EL PROGRESO ESCUINTLA GUATEMALA HUEHUETENANGO IZABAL JALAPA QUETZALTENANGO QUICHE RETALHULEU SACATEPEQUEZ SAN MARCOS SANTA ROSA SOLOLA SUCHITEPEQUEZ TOTONICAPAN ZACAPA
FUNC1
01 – SERVICIOS PUBLICOS GENERALES 2.65028e+09 5.44695e+08 6.02520e+08 1.45687e+09 5.06434e+08 1.82266e+09 4.99280e+09 1.26883e+09 1.95440e+08 4.06992e+08 5.56908e+09 3.55170e+09 3.88756e+09 1.42191e+10 6.86290e+09 5.26960e+09 5.25078e+09 3.65925e+09 1.48548e+09 7.83247e+09
02 – DEFENSA 0.00000e+00 4.18211e+06 NaN 1.25551e+06 NaN 8.25311e+05 0.00000e+00 NaN NaN 5.80000e+05 6.50000e+01 4.45000e+04 NaN NaN NaN 2.81500e+04 NaN NaN NaN 0.00000e+00
03 – ORDEN PUBLICO Y SEGURIDAD CIUDADANA 4.15592e+08 2.73807e+06 1.73070e+07 1.20563e+08 3.46200e+05 8.40011e+06 7.54022e+07 8.85087e+07 1.34582e+06 4.66579e+07 1.11593e+09 9.09038e+07 3.09004e+08 2.05695e+09 2.18261e+07 1.47161e+07 2.27009e+08 8.04501e+08 3.30255e+07 5.84190e+08
04 – ATENCION A DESASTRES Y GESTION DE RIESGOS 1.65910e+06 1.21105e+06 1.55504e+06 1.00000e+05 0.00000e+00 1.09773e+08 1.60380e+07 7.50000e+04 8.19824e+05 1.25000e+05 3.74758e+06 1.42707e+07 2.55000e+04 1.97266e+08 8.83148e+07 1.64157e+05 2.05584e+08 1.63782e+08 2.30420e+07 3.34638e+08
05 – ASUNTOS ECONOMICOS 2.18998e+10 9.96920e+08 8.61639e+08 5.23307e+08 7.35246e+07 1.12597e+09 6.27814e+08 3.92554e+09 4.30563e+08 9.99355e+07 9.02544e+09 5.93387e+09 3.12895e+09 5.35538e+09 5.26815e+09 1.59234e+09 4.55446e+09 2.28815e+09 1.23100e+09 1.34795e+09

5 rows × 88 columns

In [99]:
mi_muni_d.groupby(["DEPTO"]).sum()
Out[99]:
APROBADO RETRASADO EJECUTADO PAGADO
DEPTO
ALTA VERAPAZ 4.92612e+10 1.05584e+11 3.81355e+10 8.22879e+10
BAJA VERAPAZ 7.21103e+09 3.50852e+10 1.35837e+10 3.21451e+10
CHIMALTENANGO 8.90672e+09 3.61980e+10 2.49596e+10 5.01306e+10
CHIQUIMULA 6.90156e+09 3.30076e+10 1.53965e+10 3.42360e+10
EL PROGRESO 5.37074e+09 2.42451e+10 1.40860e+10 3.10323e+10
ESCUINTLA 1.20947e+10 7.26081e+10 5.14456e+10 1.03419e+11
GUATEMALA 5.68443e+10 2.15876e+11 3.21973e+11 7.58397e+11
HUEHUETENANGO 2.47259e+10 1.00322e+11 4.92594e+10 9.70342e+10
IZABAL 5.11757e+09 2.68013e+10 1.79282e+10 4.43529e+10
JALAPA 1.58871e+09 2.33997e+10 1.04539e+10 2.38595e+10
JUTIAPA 4.14766e+09 4.03333e+10 2.00108e+10 5.03091e+10
PETEN 3.45629e+09 4.68713e+10 3.39268e+10 6.44478e+10
QUETZALTENANGO 8.29197e+09 8.49271e+10 5.99876e+10 1.09478e+11
QUICHE 4.84704e+09 4.54015e+10 2.37022e+10 5.21949e+10
RETALHULEU 1.96498e+09 1.84727e+10 1.19464e+10 2.63670e+10
SACATEPEQUEZ 1.23032e+10 6.03496e+10 4.11457e+10 9.07820e+10
SAN MARCOS 1.09746e+10 7.05547e+10 4.79591e+10 9.71124e+10
SANTA ROSA 2.79451e+09 3.75883e+10 2.21405e+10 4.49575e+10
SOLOLA 1.40226e+09 4.53424e+10 2.22294e+10 5.03288e+10
SUCHITEPEQUEZ 1.02333e+10 4.30445e+10 3.06963e+10 5.61131e+10
TOTONICAPAN 2.71191e+09 2.21165e+10 1.12744e+10 2.26652e+10
ZACAPA 4.65654e+09 2.44776e+10 1.39398e+10 3.69447e+10
In [96]:
func_p.plot(kind="barh", figsize=(8,6), linewidth=2.5)
Out[96]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7e6d19ca20>