Pandas Groupby Agregat

Pandas Groupby Agregat



La tècnica de groupby és essencial a causa de com de bé agrega les dades tant pel que fa al rendiment com a la mida del codi. El terme 'groupby' normalment descriu un procediment que inclou els passos següents:

  • Divisió : aplicant determinades condicions als conjunts de dades, podem dividir les dades en grups.
  • Aplicant : Un procés on apliquem individualment un mètode a cada grup.
  • Combinant : Un procediment per combinar diversos conjunts de dades per formar una estructura de dades després d'utilitzar el mètode groupby().

En el procés d'agregació, es calcula una estadística resum per a cada grup. Per a cada grup, el mètode agregat retorna un valor agregat (valor únic). Podem realitzar diverses operacions d'agregació de dades agrupades després de dividir les dades en grups mitjançant la funció groupby.







Per què els pandas proporcionen una varietat de mètodes d'agregació de dades?

Pandas ofereix una àmplia gamma de característiques i funcions per ajudar en l'anàlisi i l'agregació de dades. L'ús dels mètodes pivot(), groupby() i pivot_table(), per exemple, ofereix una perspectiva diferent sobre com s'agregarien les dades. Proporcionen enfocaments pràctics per dur a terme diverses tasques en lloc de ser simplement reempaquetats.



Com utilitzar la funció .agg() a Pandas

Una mitjana simple o suma de valors és la funció d'agregació que s'utilitza amb més freqüència. Podeu utilitzar la columna d'un marc de dades o diverses columnes per cridar una funció agregada. Veureu moltes maneres d'agregar dades mitjançant el mètode Pandas groupby. Per demostrar com de fàcil és el procediment, mirem alguns exemples que es donen a continuació. Les operacions matemàtiques bàsiques com la suma, el mínim, el màxim, la desviació absoluta mitjana, la desviació estàndard, la mitjana, la mitjana, la variància i el producte es troben entre les funcions d'agregació integrades més utilitzades. Per resumir les dades, podem combinar groupby i la funció agg().



Exemple # 01: determineu la suma de columnes agrupant les dades mitjançant la funció groupby.agg()

Primer crearem un marc de dades mitjançant la funció pd.DataFrame() de manera que puguem agrupar les dades de la columna o columnes del marc de dades i després determinar-ne el valor mitjà. Hem d'importar els mòduls de pandas i la biblioteca numpy abans de crear el dataframe.





Com podeu veure, hem utilitzat el diccionari dels pandes per crear el nostre marc de dades. El nostre marc de dades df té quatre columnes: 'pacient' 'grup', 'edat' i 'ampolles de sang'. Els valors de les dades ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') estan continguts per la columna 'pacient', mentre que els valors de les dades ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) i ( 2, 3, 1, 1, 2, 3, 2, 1) es troben a les columnes 'grup', 'edat' i 'ampolles_sang' respectivament. Suposem que hem de determinar la suma de valors a la columna 'blood_bottles' agrupant els valors a la columna 'group'.



Per a les dades del grup 'A', la suma dels valors de 'ampolles_sang' és 7. Per als valors del grup 'B' i 'C', la suma dels valors de 'ampolles_sang' és 2 i 6, respectivament. També podem agrupar diverses columnes per determinar la suma de cada grup.

Com es pot observar, hem passat una llista d'etiquetes de columnes, és a dir, ['pacient', 'grup'] dins de la funció groupby() per crear els grups de categories a cada columna especificada. Per a cada grup de columnes especificades, hem determinat la suma de valors a 'blood_bottles'. Per exemple, 'Ali' es troba als valors A i C de la columna 'grup'. Al grup A, la suma dels valors de 'ampolles_sang' per a Ali és 2 i 5 al grup 'C'.

Exemple núm. 02: aplicació de múltiples funcions en una única columna de dataframe utilitzant la funció groupby.agg()

Es poden aplicar diverses agregacions amb el mètode 'groupby()' mitjançant la funció pandas agg(). Es pot passar una llista invocable al mètode. Vegem com podem agregar les nostres dades mitjançant els mètodes integrats de la biblioteca numpy. A diferència de l'exemple anterior, aplicarem diverses funcions a una sola columna del marc de dades. La funció pd.DataFrame() s'utilitzarà per crear un marc de dades amb almenys una columna que contingui valors numèrics.


El marc de dades requerit s'ha creat amb una columna numèrica, és a dir, 'marks' amb valors 41, 40, 35, 39, 49, 31, 34 i 42. Hi ha 3 columnes més 'estudiant', 'matèries' i 'grau'. al nostre marc de dades que es pot dividir en grups mitjançant la funció groupby(). Els valors de la columna 'estudiants' i 'matèries' són ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') i ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Mentre que el grau de la columna conté els valors de les dades com a cadenes, és a dir, ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Suposem que hem d'agrupar les dades de la columna 'matèries' i determinar tant la mitjana com la suma de les 'marques' de la columna per a cada dada agrupada.

Hem especificat el nom de la columna 'subjectes' com a cadena dins de la funció groupby() per convertir les dades en grups de categories. Per a la columna de notes, hem utilitzat el mètode agg() i dins de la funció agg() hem especificat les funcions numpy np.sum i np.mean per trobar la suma i la mitjana de les notes de les dades de cada grup en els subjectes de la columna. La suma i el valor mitjà del valor del grup 'AI' són 91 i 45,5, respectivament. La suma de les notes del valor 'C++' és 75 i el valor mitjà és 37,5. Per al grup JAVA, la suma de les notes és 71 i el valor mitjà és 35,5, mentre que la suma i el valor mitjà de Python són 74 i 37, respectivament.

Exemple # 03: aplicació de funcions múltiples a les columnes múltiples del marc de dades mitjançant la funció groupby.agg()

En lloc d'aplicar funcions diferents a la columna d'un únic marc de dades, podem aplicar diverses funcions a columnes numèriques diferents. Podem utilitzar un diccionari a la funció agg() com a entrada per aplicar un mètode d'agregació específic a les diferents columnes del marc de dades. Importem les biblioteques pandas i numpy abans de crear un marc de dades amb diverses columnes numèriques.

Hi ha quatre columnes al marc de dades recentment creat amb els noms 'jugador', 'puntuació_menor', 'puntuació_més' i 'ubicació'. A la columna 'jugador', hem emmagatzemat els noms d'alguns jugadors com a valors de dades de cadena ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), a la columna 'least_score' hi ha les puntuacions més baixes de jugadors per a alguns partits (12, 34, 2, 21, 9, 1, 0, 34), mentre que a la columna 'highest_score' tenim les puntuacions més altes dels jugadors. (12, 34, 2, 21, 9, 1, 0, 34) i a la columna 'ubicació' hi ha els noms dels llocs on els jugadors han jugat els seus partits ('França', 'Anglaterra', 'Dubai', ' Dubai', 'Anglaterra', 'França', 'Dubai', 'França').

Suposem que després d'agrupar les dades a la columna 'jugadors', hem de trobar la mitjana dels valors de la columna 'menor_puntuació' i la suma dels valors de les dades 'més_puntuació' per a cada grup.

Dins de la funció agg(), vam passar un diccionari Python {'highest_score': 'sum', 'least_score': 'mean'} per trobar la suma i el valor mitjà d'una columna especificada per a cada grup. Es pot veure que el valor agrupat Alex té la suma del valor de 'puntuació més alta' 132 i la mitjana del valor de 'puntuació mínima' 17,5. Per a 'Fin', la suma de valors és 199 i la mitjana és de 18,3333333 a les columnes 'puntuació_més' i 'puntuació_més' respectivament. El valor del grup Leo té un valor de suma de 180 a 'highest_score' i un valor mitjà de 7,666667 a 'least_score'.

Conclusió

En aquest tutorial, hem parlat de les funcions groupby() i d'agregació a pandas. També hem parlat de com utilitzar la funció groupby.agg(). Hem implementat tres exemples en aquest article per ensenyar-vos com utilitzar una única funció d'agregació en una columna de marc de dades agrupant les dades de columnes individuals i múltiples, com aplicar diverses funcions d'agregació en una sola columna d'un marc de dades i com aplicar múltiples funcions d'agregació a les múltiples columnes del marc de dades mitjançant la funció groupby.agg().