panda

Cum se folosește Group by în Pandas Python

Cum se folosește Group by în Pandas Python
Grupul Pandas după funcție este utilizat pentru gruparea obiectelor sau coloanelor DataFrames pe baza unor condiții sau reguli particulare. Folosind funcția groupby, gestionarea setului de date este mai ușoară. Cu toate acestea, toate înregistrările aferente pot fi aranjate în grupuri. Folosind biblioteca Pandas, puteți implementa grupul Pandas după funcție pentru a grupa datele în funcție de diferite tipuri de variabile. Majoritatea dezvoltatorilor au folosit trei tehnici de bază pentru grup după funcție. În primul rând, împărțirea în care datele se împart în grupuri pe baza unor condiții particulare. Apoi, aplicați anumite funcții acestor grupuri. La final, combinați ieșirea sub formă de structură de date.

În acest articol, vom parcurge utilizările de bază ale unui grup după funcție în pitonul lui Panda. Toate comenzile sunt executate pe editorul Pycharm.

Să discutăm conceptul principal al grupului cu ajutorul datelor angajatului. Am creat un cadru de date cu câteva detalii utile despre angajați (Employee_Names, Designation, Employee_city, Age).

Concatenare de șiruri folosind Grup după funcție

Folosind funcția groupby, puteți concatena șiruri. Aceleași înregistrări pot fi alăturate cu „,” într-o singură celulă.

Exemplu

În exemplul următor, am sortat datele pe baza coloanei „Desemnare” a angajaților și ne-am alăturat angajaților care au aceeași desemnare. Funcția lambda este aplicată pe „Employees_Name”.

import panda ca pd
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby („Desemnare”) ['Employee_Names'].aplicați (lambda Employee_Names: ','.alăturați-vă (Employee_Names))
print (df1)

Când codul de mai sus este executat, se afișează următoarea ieșire:

Sortarea valorilor într-o ordine crescătoare

Utilizați obiectul groupby într-un cadru de date obișnuit apelând „.to_frame () 'și apoi utilizați reset_index () pentru reindexare. Sortează valorile coloanei apelând sort_values ​​().

Exemplu

În acest exemplu, vom sorta vârsta angajatului în ordine crescătoare. Folosind următoarea bucată de cod, am recuperat „Employee_Age” în ordine crescătoare cu „Employee_Names”.

import panda ca pd
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Employee_Age'].sumă().to_frame ().reset_index ().sort_values ​​(by = 'Employee_Age')
print (df1)

Utilizarea agregatelor cu groupby

Există o serie de funcții sau agregări disponibile pe care le puteți aplica pe grupuri de date, cum ar fi count (), sum (), mean (), median (), mode (), std (), min (), max ().

Exemplu

În acest exemplu, am folosit o funcție „count ()” cu groupby pentru a număra angajații care aparțin aceleiași „Employee_city”.

import panda ca pd
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby („Orașul_angajului”).numara()
print (df1)

După cum puteți vedea următoarea ieșire, în coloanele Desemnare, Numele angajaților și Angajați_ vârstă, numărați numerele care aparțin aceluiași oraș:

Vizualizați datele folosind groupby

Utilizând „import matplotlib.pyplot ', vă puteți vizualiza datele în grafice.

Exemplu

Aici, următorul exemplu vizualizează „Employee_Age” cu „Employee_Nmaes” din DataFrame-ul dat utilizând declarația groupby.

import panda ca pd
import matplotlib.pyplot ca plt
cadru de date = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
plt.clf ()
cadru de date.groupby ('Employee_Names').sumă().complot (kind = 'bar')
plt.spectacol()

Exemplu

Pentru a trasa graficul stivuit folosind groupby, rotiți „stivuit = adevărat” și utilizați următorul cod:

import panda ca pd
import matplotlib.pyplot ca plt
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df.groupby (['Employee_city', 'Employee_Names']).mărimea().descărca ().plot (kind = 'bar', stacked = True, fontsize = '6')
plt.spectacol()

În graficul de mai jos, numărul de angajați stivuite care aparțin aceluiași oraș.

Schimbați numele coloanei cu grupul de

De asemenea, puteți schimba numele coloanei agregate cu un nume nou modificat după cum urmează:

import panda ca pd
import matplotlib.pyplot ca plt
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Desemnare'].sumă().reset_index (nume = 'Angajat_Desemnare')
print (df1)

În exemplul de mai sus, numele „Desemnare” este schimbat în „Angajat_Desemnare”.

Recuperați grupul după cheie sau valoare

Folosind instrucțiunea groupby, puteți extrage înregistrări sau valori similare din cadrul de date.

Exemplu

În exemplul dat mai jos, avem date de grup bazate pe „Desemnare”. Apoi, grupul „Personal” este recuperat folosind .getgroup („Personal”).

import panda ca pd
import matplotlib.pyplot ca plt
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
extract_value = df.groupby („Desemnare”)
print (extract_value.get_group („Personal”))

Următorul rezultat se afișează în fereastra de ieșire:

Adăugați valoare în lista de grupuri

Date similare pot fi afișate sub forma unei liste utilizând instrucțiunea groupby. Mai întâi, grupați datele pe baza unei condiții. Apoi, aplicând funcția, puteți introduce cu ușurință acest grup în liste.

Exemplu

În acest exemplu, am inserat înregistrări similare în lista grupurilor. Toți angajații sunt împărțiți în grup pe baza „Employee_city”, iar apoi prin aplicarea funcției „Lambda”, acest grup este recuperat sub forma unei liste.

import panda ca pd
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_city') ['Employee_Names'].apply (lambda group_series: group_series.a lista()).reset_index ()
print (df1)

Utilizarea funcției Transform cu groupby

Angajații sunt grupați în funcție de vârstă, aceste valori adăugate împreună și, folosind funcția „transformare”, se adaugă o nouă coloană în tabel:

import panda ca pd
df = pd.DataFrame (
„Employee_Names”: [„Sam”, „Ali”, „Umar”, „Raees”, „Mahwish”, „Hania”, „Mirha”, „Maria”, „Hamza”],
„Desemnare”: [„Manager”, „Personal”, „Ofițer IT”, „Ofițer IT”, „HR”, „Personal”, „HR”, „Personal”, „Conducătorul echipei”],
„Employee_city”: ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Angaj_vârstă”: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df ['suma'] = df.groupby (['Employee_Names']) ['Employee_Age'].transforma („suma”)
print (df)

Concluzie

Am explorat diferitele utilizări ale declarației groupby în acest articol. Am arătat cum puteți împărți datele în grupuri și, aplicând diferite agregări sau funcții, puteți prelua cu ușurință aceste grupuri.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...