Python pandas – GroupBy

Python pandas – GroupBy : En este tutorial, vamos a aprender sobre la pandas GroupBy en Python con ejemplos .

Python pandas – GroupBy

GroupBy método se puede utilizar para trabajar en las filas de grupos de datos en conjunto y llamar a las funciones de agregado. Permite agrupar filas con sede fuera de una columna y llevar a cabo una función de agregado en ellos.

Consideremos el siguiente ejemplo, hay tres particiones de IDS (1, 2, y 3) y varios valores ellos class. Ahora podemos agrupar por la columna ID y los agregados utilizando algún tipo de función de agregado. Aquí se nos suma-ing los valores, poniendo los valores.

GroupBy con pandas

Crear una trama de datos de un diccionario

import numpy as np
import pandas as pd
data = {'company':['Google','Microsoft','FB','Google','FB'], 'person':['Molly','Nathaniel', 'Sriansh', 'Carl','Sarah'], 'Sales':[200,123,130,144,122]}
df = pd.DataFrame(data)
print(df)

salida

     company     person  Sales
0 Google Molly 200
1 Microsoft Nathaniel 123
2 FB Sriansh 130
3 Google Carl 144
4 FB Sarah 122

Los siguientes ejemplos ilustran la función de ‘GroupBy’ ,

Ejemplo 1: GroupBy por ‘compañía’

# returns the groubBy object
print(df.groupby('company'))
'''
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f1721585350>
'''
by_company = df.groupby('company')
#invoke aggregate function
print(by_company.mean())
'''
           Sales
company
FB 126
Google 172
Microsoft 123
'''

En el ejemplo anterior, no vemos la columna de la persona , debido a que el tipo de datos es cadena y de ninguna manera, podemos obtener media de variables de cadena, y por lo tanto pandas ignora automáticamente cualquier valores no numéricos.

A continuación se presentan algunos ejemplos más de las funciones de agregado,

print(by_company.sum())
'''
Output:
           Sales
company
FB 252
Google 344
Microsoft 123
'''

print(by_company.std())
'''
Output:
               Sales
company
FB 5.656854
Google 39.597980
Microsoft NaN
'''

Tenga en cuenta el tipo for de los valores son por class una trama de datos, tal como se ilustra a continuación,

std = by_company.std()
print(type(std))
'''
Output:
<class 'pandas.core.frame.DataFrame'>
'''

Y, por lo tanto, podemos llevar a cabo toda la trama de datos funciones tales como,

print(by_company.std().loc['FB'])
'''
Output:
Sales 5.656854
Name: FB, dtype: float64
'''

lo anterior pasos mencionados, todos se pueden realizar en una sola etapa como sigue,

print(df.groupby('company').sum().loc['FB'])
'''
Output:
Sales 252
Name: FB, dtype: int64
'''

Algunas funciones más agregados son,

print(df.groupby('company').count())
'''
Output:
           person Sales
company
FB 2 2
Google 2 2
Microsoft 1 1
'''
print(df.groupby('company').max())
'''
Output:
              person Sales
company
FB Sriansh 130
Google Molly 200
Microsoft Nathaniel 123
'''
print(df.groupby('company').min())
'''
Output:
              person Sales
company
FB Sarah 122
Google Carl 144
Microsoft Nathaniel 123
'''

Usando GroupBy con describir método

El describe () método devuelve un manojo de información útil a la vez.

print(df.groupby('company').describe())
'''
Output:
          Sales ...
          count mean std ... 50% 75% max
company ...
FB 2.0 126.0 5.656854 ... 126.0 128.0 130.0
Google 2.0 172.0 39.597980 ... 172.0 186.0 200.0
Microsoft 1.0 123.0 NaN ... 123.0 123.0 123.0

[3 rows x 8 columns]
'''

El formato de la descripción se puede cambiar usando transposición () método,

print(df.groupby('company').describe().transpose())
'''
Output:
company FB Google Microsoft
Sales count 2.000000 2.00000 1.0
      mean 126.000000 172.00000 123.0
      std 5.656854 39.59798 NaN
      min 122.000000 144.00000 123.0
      25% 124.000000 158.00000 123.0
      50% 126.000000 172.00000 123.0
      75% 128.000000 186.00000 123.0
      max 130.000000 200.00000 123.0
'''


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *