<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Algunas exploraciones y resúmenes
En general cuando se tienen algo de información, una vez que se carga lo que se hace es explorarla. Esto desde mi práctica es al inicio conocer el tipo de varibles, rangos, missing values, etc. Después hacer un poco de exploración gráfica para ir conociendo las posibles relaciones entre variables, en caso de tratar de construir algún modelo o para hacer algunas modificaciones entre los datos. En lo personal, pienso que primero uno debe de jugar un poco con los datos y luego empezar a preguntarse cosas.
Objetivo
Cargo datos relacionados con los ingresos proporcionados por SHCP, se eligen algunas columnas para trabajar la información y se exploran las relaciones entre los montos registrados por mes, año, mes-año y año-sector. La intención es responder las siguientes preguntas sencillas
Step1:  Con la muestra de datos que se define en Ingresos_2, la idea es procesarla y explorar los datos. Esto de manera sencilla implica conocer los tipos de variables, que ya se hizo con el comando info(). Pero lo que se puede buscar es hacer un análisis exploratorio sencillo. Esto tanto de manera gráfica, como de manera de estruturas de datos. Para revisar las posibles relaciones entre los montos y los años o alguna otra variable, se hace uso de agrupaciones. Con esto se hace cierto resumen entre las variables.
Step2:  La misma idea se puede hacer con respecto a los meses para conocer como se comportan los montos. Esto ayuda a responder la pregunta, *¿qué mes tiene la media más alta en montos?
Step3:  Lo que se observa del grupo anterior es que al ver la media, muestra los valores para MONTO y CICLO. La cuestion es que CICLO es tomada como una variable numérica cuando se cargan los datos y al hacer la agrupación respecto a los meses muestra la media de las variables numéricas. Para que solo se muestren los valores de la suma de los montos, se hace del siguiente modo
Step4:  Para elegir los 5 registros con los montos más alta, hacemos la siguiente selección al Grupo_3
Step5:  Los anteriores ejemplos, muestran como resolver preguntas sencillas donde se involugra algun variable categórica y su relación con otra numérica. Se pueden hacer agrupaciones más sofisticadas, donde se buscar ver la relación de más de 2 variables; ejemplo de Ciclo, Mes y Sector. 
Un poco de exploración gráfica
Lo que se puede hacer con los ejemplos anteriores; las agrupaciones, es mostrar ejemplos de como explorar gráficamente las muestras de datos procesadas y los datos originales. La única finalidad de las siguientes gráficas es explorar el comportamiento de los datos, sin tener una pregunta a investigar de manera inicial.
<ASSISTANT_TASK:>
Python Code:
#Se prepara el entorno de trabajo
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
#matplotlib.style.use('ggplot') se puede correr este código para usar gráficos del tipo de ggplot2 en R
plt.rcParams['figure.figsize']=(20,7)
# -*- coding: utf-8 -*-
#Se cargan los datos desde un directorio
Ingresos=pd.read_csv('/Datos/Ingreso.csv')
Ingresos.head()
#Cantidad de filas y columnas.
Ingresos.shape
#Descripción en general de las variables
Ingresos.info()
#Con dtypes es facil ver el tipo de dato que se tienen en las variables
Ingresos.dtypes
#Se seleccionan las columnas que yo considero  más importates. En este caso Ciclo, Mes, Nombre, Tema, Sector
# y Monto, son a mi parecer los más relevantes.
#Si solo se deseara elegir una sola columna, se usaría Ingresos['Nombre de la columna']
Ingresos_2=Ingresos[['CICLO','MES','NOMBRE','TEMA','SECTOR','MONTO']]
Ingresos_2.head()
Explanation: Algunas exploraciones y resúmenes
En general cuando se tienen algo de información, una vez que se carga lo que se hace es explorarla. Esto desde mi práctica es al inicio conocer el tipo de varibles, rangos, missing values, etc. Después hacer un poco de exploración gráfica para ir conociendo las posibles relaciones entre variables, en caso de tratar de construir algún modelo o para hacer algunas modificaciones entre los datos. En lo personal, pienso que primero uno debe de jugar un poco con los datos y luego empezar a preguntarse cosas.
Objetivo
Cargo datos relacionados con los ingresos proporcionados por SHCP, se eligen algunas columnas para trabajar la información y se exploran las relaciones entre los montos registrados por mes, año, mes-año y año-sector. La intención es responder las siguientes preguntas sencillas:
¿En qué año se registró un mayor monto?
¿En qué mes se tienen la media más alta de monto?
¿En qué año y mes se registran los mayores montos?
¿En qué año y sector se registran los mayores montos?
Datos
Para conocer los detalles de los datos usados en el ejemplo se puede consultar información en el  link siguiente:
   * http://catalogo.datos.gob.mx/dataset/estadisticas-oportunas-de-finanzas-publicas
End of explanation
#Para responder ¿cuál es el año con mayor monto registrado? se hace la siguente agrupación.
Grupo_1=Ingresos_2.groupby('CICLO')
#La cantidad de registros para cada año
Grupo_1.size()
Grupo_1.sum()
Explanation: Con la muestra de datos que se define en Ingresos_2, la idea es procesarla y explorar los datos. Esto de manera sencilla implica conocer los tipos de variables, que ya se hizo con el comando info(). Pero lo que se puede buscar es hacer un análisis exploratorio sencillo. Esto tanto de manera gráfica, como de manera de estruturas de datos. Para revisar las posibles relaciones entre los montos y los años o alguna otra variable, se hace uso de agrupaciones. Con esto se hace cierto resumen entre las variables.
End of explanation
Grupo_2=Ingresos_2.groupby('MES')
#La cantidad de registros en cada mes
Grupo_2.size()
Grupo_2.mean()
Explanation: La misma idea se puede hacer con respecto a los meses para conocer como se comportan los montos. Esto ayuda a responder la pregunta, *¿qué mes tiene la media más alta en montos?
End of explanation
Grupo_2.mean()['MONTO']
#Si uno desea saber cual es el mes con la media de montos mayor, basta elegir el máximo de los valores de las medias al
#ordenarlas. En este caso corresponde al mes de Diciembre. 
Grupo_2['MONTO'].mean().sort_values()[-1:]
#Agrupamos la información por años y mes para conocer como se comportan los montos 
Grupo_3=Ingresos_2.groupby(['CICLO','MES'])
#Vemos el valor de la suma de los montos
Grupo_3.sum()
Explanation: Lo que se observa del grupo anterior es que al ver la media, muestra los valores para MONTO y CICLO. La cuestion es que CICLO es tomada como una variable numérica cuando se cargan los datos y al hacer la agrupación respecto a los meses muestra la media de las variables numéricas. Para que solo se muestren los valores de la suma de los montos, se hace del siguiente modo:
End of explanation
Grupo_3.sum().sort_values(by='MONTO')[-5:]
#Se puede revisar como se comporta por CICLO y SECTOR, elegimos los 15 registros con valor más 
# alto en la suma de su MONTO
Ingresos_2.groupby(['CICLO','SECTOR']).sum().sort_values(by='MONTO')[-15:]
#Graficamos el resultado anterior.
Ingresos_2.groupby(['CICLO','SECTOR']).sum().sort_values(by='MONTO')[-15:].plot(kind='bar')
Explanation: Para elegir los 5 registros con los montos más alta, hacemos la siguiente selección al Grupo_3
End of explanation
Grupo_1['MONTO'].agg([np.size,sum,max,min])
#El comportamiento entre máximo y mínimos
Grupo_1['MONTO'].agg([max,min]).plot(kind='bar')
#Se explora como se comporta la agrupación por mes por medio de una gráfica de barras.
Grupo_2['MONTO'].agg([max,min,np.mean])
#Los datos originales, permiten explorar gráficamente como se relacionan los valors de los montos con respecto a los meses.
sns.barplot(data=Ingresos_2,x="MES",y="MONTO",palette="PRGn")
#También se puede explorar con los datos agrupados por Año-Mes el comportamiento de los máximos, mínimos y la media de los montos 
Grupo_3['MONTO'].agg([max,min,np.mean]).plot(title='Comportamiento de la suma de los Montos')
Explanation: Los anteriores ejemplos, muestran como resolver preguntas sencillas donde se involugra algun variable categórica y su relación con otra numérica. Se pueden hacer agrupaciones más sofisticadas, donde se buscar ver la relación de más de 2 variables; ejemplo de Ciclo, Mes y Sector. 
Un poco de exploración gráfica
Lo que se puede hacer con los ejemplos anteriores; las agrupaciones, es mostrar ejemplos de como explorar gráficamente las muestras de datos procesadas y los datos originales. La única finalidad de las siguientes gráficas es explorar el comportamiento de los datos, sin tener una pregunta a investigar de manera inicial.
End of explanation
<END_TASK>