[MÚSICA] [MÚSICA] Otra operación muy poderosa y frecuentemente utilizada en Pandas es el agrupamiento. Esta nos permite convertir un data frame en una estructura que podría verse como un conjunto de data frames. En este vídeo, primero estudiaremos lo que pasa cuando agrupamos los valores de un data frame, luego veremos cómo utilizar la operación de agrupamiento y finalmente veremos cómo hacer operaciones sobre los data frames agrupados. Empecemos observando este pequeño extracto de nuestro data frame de compras estatales. Hasta el momento, hemos estado usando siempre el data frame completo, pero en estos casos sería interesante analizar los datos por separado. Por ejemplo, en estos datos tenemos información de contratos tanto de la rama ejecutiva como de las corporaciones autónomas. Sería muy interesante, poder analizar los contratos de cada una de estas ramas sin tener que pasar por el proceso de construir data frames separados para cada uno. Precisamente eso es lo que nos permite las funciones de agrupamiento en pandas. Nos permitirán pasar de un data frame como el de esta figura a un data frame como el de esta otra figura, en el que los registros estan agrupados de acuerdo al valor de una de sus columnas. Lo primero que debemos saber, es que la función group by es la función capaz de tomar un data frame y convertirlo en un conjunto de grupos de data frames. Para esto, la función group by recibe la columna que se va a utilizar para realizar el agrupamiento y retorna al conjunto de grupos. Técnicamente, este conjunto es del tipo llamado data frame group by y a pesar del nombre, la mayoría de funciones que pueden aplicarse sobre un data frame no pueden aplicarse sobre unos de estos conjuntos. En la imagen, tomamos el data frame completo y agrupamos las filas utilizando la columna llamada rama. El resultado es un conjunto que tiene 4 elementos, como muestra la invocación a la función len. En la imagen también demostramos un recorrido sobre el conjunto que nos permite imprimir el nombre de cada uno, o sea, el valor de rama que le corresponde y la cantidad de registros dentro de ese conjunto. Por ejemplo, en la imagen vemos que la mayor parte de los contratos son responsabilidad de la rama ejecutiva, mientras que la rama legislativa es la que menos contratos diferentes tiene. Finalmente, el tercer bloque de código muestra cómo podemos usar la función get_group para extraer los datos correspondientes a uno de los grupos. Agrupar los valores nos permite hacer con facilidad cálculos para cada uno de los grupos, especialmente usando funciones agregadas. Por ejemplo, podemos extraer una columna y utilizar la función mean sobre ella, para saber para cada uno de los grupos el promedio en esa columna. En la imagen vemos esa estrategia utilizada para calcular el valor pagado promedio por cada una de las ramas. También podemos utilizar de la misma forma otras funciones agregadas como count que nos da la cantidad de valores o sum que da el resultado de sumar todos los valores. Otra función muy útil es la función describe. En el caso de un data frame agregado nos dará la misma información de siempre pero calculada para cada uno de los grupos, es decir, que nos dará la cantidad, el promedio, la desviación estándar y los valores para cada uno de los cuarteles. Resolvamos una pregunta antes de seguir adelante. Finalmente, observemos lo que ocurre si en lugar de utilizar una columna como parámetro de la función group by utilizamos una lista de columnas. En este caso, lo que obtenemos es un data frame agrupado que en lugar de tener 4 grupos tiene 56. Cada uno de estos grupos esta identificado por una dupla, dónde aparece una rama y un sector. Por ejemplo, tenemos un grupo de 7290 contratos que pertenecen a la rama llamada corporación autónoma y al sector llamado ambiente de desarrollo sostenible. Sobre estos nuevos grupos también es posible aplicar funciones agregadas o incluso aplicar cualquier otra función siempre y cuando tenga sentido según los tipos de datos que haya dentro del data frame. Por ejemplo, en la imagen vemos que el resultado de aplicar la función zoom incluye únicamente las columnas numéricas sobre las que se puede aplicar esta función. En el segundo ejemplo de la imagen, vemos la función max aplicada sobre el conjunto de grupos utilizando la función apply. En este caso, la función max se aplica columna por columna a cada uno de los grupos en el data frame agrupado. Por ejemplo, la imagen nos muestra que para la rama llamada corporación autónoma y el sector ambiente de desarrollo sostenible el departamento con el máximo nombre es el Valle del Cauca. Detengámonos un momento para resolver una pregunta. Vamos a terminar este vídeo en este punto, pero antes de irnos queremos volver a mencionar la enorme utilidad de las funciones de agrupamiento. Muchas veces el análisis de información es difícil de hacer a nivel detallado, pero cuando formamos grupos empezamos a descubrir información mucho más valiosa. Más adelante cuando estudiemos gráficas basadas en pandas, veremos también cómo podemos utilizar las agrupaciones para construir visualizaciones de muchísima utilidad. [MÚSICA]