Î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 pddf = 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 pddf = 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 pddf = 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 pdimport 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 pdimport 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 pdimport 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 pdimport 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 pddf = 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 pddf = 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.