Índice de Groupby de Pandas

Índice de Groupby de Pandas
Para dividir los datos en grupos, podemos usar los datos de Pandas DataFrame.Función Groupby (). Podemos dividir los objetos de pandas en grupos de datos a lo largo de un eje. La definición formal de agrupación es un mapeo de etiqueta a grupo. Se divide un objeto, se aplica una función y las salidas se combinan en una operación de grupo. Este es un método útil para realizar las operaciones y agregar las cantidades masivas de datos. Pandas Groupby elimina las columnas de Groupby de la lista de columnas de DataFrame y las convierte en índices por defecto. En este artículo, demostraremos cómo agrupar los datos basados ​​en el índice o el múltiple éndice del marco de datos en pandas y cómo realizar las diferentes operaciones en el índice después de agruparlos.

Cómo usar el índice Groupby en pandas

Echemos un vistazo a la sintaxis de la función GroupBy () antes de aplicarla al índice de DataFrame.

Sintaxis:

Marco de datos.GroupBy (BY = None, Axis = 0, Level = None, As_Index = True, Sort = True, Group_Keys = True)

Dónde;

por: Una cadena, una función, una iterable o un mapeo.

eje: Int, cero por defecto.

nivel: Agrupar los datos para el eje de índice de nivel múltiple por cierto nivel o nivel jerárquico.

as_index: Esto solo se aplica a la entrada de DataFrame. Si index = false, la salida se agrupa en "estilo SQL".

clasificar: Se debe ordenar un grupo de claves. Apagar esto para aumentar el rendimiento. Esto no debería tener impacto en el orden o la secuencia de observaciones dentro de cualquier grupo. Las filas dentro de cada grupo se mantienen en el orden mantenido por el grupo.

Group_keys: Al llamar a la solicitud, agregue las claves de los grupos al índice para identificar la explaición de las piezas: reduzca la dimensionalidad del tipo de retorno si puede; Si no, devuelve un tipo constante.

Ahora, puede hacer los cálculos mientras se agrupa mediante las columnas de índice único o múltiple utilizando los métodos enumerados a continuación:

Ejemplo 1: Encontrar el valor máximo de la columna agrupando la columna de índice

Primero creamos un marco de datos utilizando el PD.Función DataFrame () para que podamos agrupar los datos del índice de DataFrame y determinar su valor máximo para una columna específica de DataFrame. Importamos la biblioteca pandas antes de crear el marco de datos.

Creamos un marco de datos que consta de tres columnas: "Team_id", "País" y "Puntuación". Los valores de datos ("001", "002", "001", "001", "003", "003", "002", "001", "002", "003"), ("España", "Brasil", "Brasil", "Alemania", "Brasil", "España", "Alemania", "España", "Alemania", "España") y (6, 10, 6, 5, 8, 5 , 8, 9, 5, 8) se almacenan en columnas "Team_id", "País" y "Puntuación", respectivamente. Como se puede notar, hay un índice entero que es un índice por defecto creado por el constructor PANDAS. Podemos especificar la columna o columnas del DataFrame como el índice del DataFrame usando la función set_index ().

La columna "Team_id" ahora se convierte en un índice. Agrupe el índice usando la función GroupBy () y encontremos el valor máximo para cada grupo con la ayuda de la función max ().

Al especificar la etiqueta de la columna de índice dentro de la función GroupBy () como una cadena, convertimos los datos en tres grupos: 001, 002 y 003. Luego, la función max () se aplica a la columna "puntuación" para encontrar el valor máximo para cada grupo. Para el valor de grupo "001", el valor máximo en la columna "puntuación" es 9. Entonces, 10 es el valor máximo de los datos del grupo 002, y 8 es el valor máximo de los datos del grupo 003.

Ejemplo 2: Encuentre la suma de los valores de la columna agrupando las columnas multiíntesis

En el ejemplo anterior, convertimos una sola columna del DataFrame como un índice de DataFrame. Ahora, establecemos las múltiples columnas de DataFrame a medida que los índices de DataFrame.

En el recién creado DataFrame, tenemos cuatro columnas con etiquetas "Grupo", "Team_id", "Nombre" y "Age". En la columna "Grupo", tenemos los valores de datos ("x", "x", "x", "x", "x", "y", "y", "y", "y", "," Y "). El "Team_id" almacena los valores ("001", "002", "001", "001", "003", "003", "002", "001", "002", "003"). Mientras que las columnas de "nombre" y "edad" consisten en valores de datos ("riz", "salvado", "kim", "william", "resistente", "sam", "ryan", "lana", "jenny" , "Clay") y (21, 25, 19, 17, 22, 27, 25, 18, 29, 21) respectivamente. Establezcamos las columnas Group y Team_id como índices de marco de datos.

La lista de las etiquetas de la columna ["grupo", "team_id"] se pasa dentro de la función set_index (). Ahora, el grupo de columnas y Team_id actúan como el índice de niveles múltiples. Convirtamos los datos de índice en grupos y determinemos la suma de los valores en la columna de "edad" para cada grupo.

La función determina con éxito la suma de los valores de la columna de "edad" para cada grupo de índices de nivel múltiple.

Ejemplo 3: Encuentre el número de valores únicos agrupando una columna de índice y una columna regular del DataFrame

Hemos visto cómo agrupar la columna de índice o múltiples columnas de índice de DataFrame. Ahora, agrupamos tanto el índice como las columnas de marcado de datos regular para encontrar el número de valores únicos en una columna específica. Para el PD.Función DataFrame (), para generar DataFrame, se pasa un diccionario como entrada.

Se crea un DataFrame. Creamos cuatro columnas en nuestro marco de datos. La columna "sección" tiene valores de cadena ("rojo", "rojo", "rojo", "rojo", "rojo", "azul", "azul", "azul", "azul", "azul"). La columna "Estudiante" almacena los nombres de los estudiantes como cadena ("Frey", "Kelly", "Peter", "Tyson", "Jhon", "Sansa", "Cloe", "Randy", "Lance", "," " Díaz ”). La columna "Sujetos" tiene valores de cadena como el nombre de los sujetos ("C ++", "C ++", "Java", "Python", "Python", "C ++", "C#", "C#", "R", "JS"). Y la columna de "posición" tiene valores enteros (3, 1, 3, 2, 1, 5, 4, 6, 4, 7).

Como la columna "Sección" se establece como un índice DataFrame, agrupemos nuestras columnas usando la función GroupBy ().

Pase una lista de etiquetas de columna (una etiqueta de columna de índice y una etiqueta de columna regular) como un argumento dentro de la función GroupBy () para crear los grupos. La función nunique () se aplica a la columna "sujeto" para contar los valores distintos para cada grupo.

Ejemplo 4: Encuentre la media de múltiples columnas agrupando múltiples columnas de índice de DataFrame

Aplicamos las diferentes funciones a una columna específica del marco de datos en los ejemplos anteriores. Ahora, aplicamos las diferentes funciones en múltiples columnas después de agrupar la columna de índice. Creamos una muestra de datos de muestra como se puede ver en lo siguiente:

Primero, establecemos la columna de sección como columna de índice.

Ahora, agrupemos los datos de la columna de índice y determinemos el valor medio y el valor de suma de las columnas "Test1" y "Test2", respectivamente.

Usamos la función Agg () y pasamos un diccionario con nombres de columnas como teclas y funciones/ operaciones como valores para aplicar las diferentes funciones en las columnas "Test1" y "Test2". La media de la columna "Test1" es 7.2 y la suma de los valores de la columna "Test2" es 35 para el Grupo A. Para el grupo B, la media de los valores de la columna "Test1" es 6.6 y la suma de los valores de la columna "Test2" es 31.

Conclusión

En este tutorial, discutimos cómo usar la función GroupBy () con la columna de índice de DataFrame en Pandas. Primero, discutimos la sintaxis de la función GroupBy () para comprender sus parámetros y funcionalidad. Prácticamente implementamos los múltiples ejemplos en este artículo para enseñarle cómo realizar las diferentes funciones en una columna específica o múltiples columnas de un marco de datos agrupando la columna de índice o columnas de índice multinivel.