W tym artykule omówimy podstawowe zastosowania grupy według funkcji w pytonie pandy. Wszystkie polecenia są wykonywane w edytorze Pycharm.
Omówmy główną koncepcję grupy za pomocą danych pracownika. Stworzyliśmy ramkę danych z przydatnymi danymi pracowników (nazwy_pracowników, stanowisko, miasto_pracownika, wiek).
Łączenie ciągów za pomocą grupowania według funkcji
Używając funkcji groupby, możesz łączyć ciągi znaków. Te same rekordy można połączyć za pomocą „,” w jednej komórce.
Przykład
W poniższym przykładzie posortowaliśmy dane na podstawie kolumny „Oznaczenie” pracowników i dołączyliśmy do Pracowników, którzy mają to samo oznaczenie. Funkcja lambda jest stosowana na 'Employees_Name'.
importuj pandy jako PDdf = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1=df.groupby("Oznaczenie")['Nazwiska_pracowników'].zastosuj(lambda Employee_Names: ','.dołącz (Imiona i nazwiska pracowników))
drukuj(df1)
Po wykonaniu powyższego kodu wyświetlane są następujące dane wyjściowe:
Sortowanie wartości w porządku rosnącym
Użyj obiektu groupby do zwykłej ramki danych, wywołując '.to_frame()', a następnie użyj reset_index() do ponownego indeksowania. Sortuj wartości kolumn, wywołując sort_values().
Przykład
W tym przykładzie posortujemy wiek pracownika w kolejności rosnącej. Korzystając z następującego fragmentu kodu, pobraliśmy „Employee_Age” w kolejności rosnącej z „Employee_Names”.
importuj pandy jako PDdf = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1=df.groupby('Nazwiska_pracowników')['Wiek_pracowników'].suma().do_ramki().reset_indeks().sort_values(by='Employee_Age')
drukuj(df1)
Korzystanie z agregatów z groupby
Dostępnych jest wiele funkcji lub agregacji, które można zastosować do grup danych, takich jak count(), sum(), mean(), median(), mode(), std(), min(), max().
Przykład
W tym przykładzie użyliśmy funkcji 'count()' z groupby, aby policzyć pracowników, którzy należą do tego samego 'Employee_city'.
importuj pandy jako PDdf = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1=df.groupby('Miasto_pracownika').liczyć()
drukuj(df1)
Jak widać następujące dane wyjściowe, w kolumnach Designation, Employee_Names i Employee_Age zliczają liczby należące do tego samego miasta:
Wizualizuj dane za pomocą groupby
Korzystając z „importuj matplotlib”.pyplot”, możesz wizualizować swoje dane na wykresach.
Przykład
Poniższy przykład wizualizuje „Employee_Age” z „Employee_Nmaes” z podanej ramki DataFrame przy użyciu instrukcji groupby.
importuj pandy jako PDimportuj bibliotekę matplotlib.pyplot jako plt
ramka danych = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
plt.clf()
ramka danych.groupby('Nazwiska_pracowników').suma().działka(rodzaj='bar')
plt.pokazać()
Przykład
Aby wykreślić wykres skumulowany za pomocą funkcji groupby, zmień ustawienie „stacked=true” i użyj następującego kodu:
importuj pandy jako PDimportuj bibliotekę matplotlib.pyplot jako plt
df = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df.groupby(['Miasto_pracowników';'Nazwiska_pracowników']).rozmiar().rozpakuj().plot(rodzaj='bar',ułożone=True, fontsize='6')
plt.pokazać()
Na poniższym wykresie liczba skumulowanych pracowników należących do tego samego miasta.
Zmień nazwę kolumny z grupą przez
Możesz również zmienić zagregowaną nazwę kolumny na nową zmodyfikowaną nazwę w następujący sposób:
importuj pandy jako PDimportuj bibliotekę matplotlib.pyplot jako plt
df = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby('Nazwiska_pracowników')['Oznaczenie'].suma().reset_index(name='Employee_Designation')
drukuj(df1)
W powyższym przykładzie nazwa „Desygnacja” została zmieniona na „Employee_Designation”.
Pobierz grupę według klucza lub wartości
Używając instrukcji groupby, możesz pobrać podobne rekordy lub wartości z ramki danych.
Przykład
W poniższym przykładzie mamy dane grupowe na podstawie „Oznaczenie”. Następnie grupa „Personel” jest pobierana za pomocą .getgroup('Personel').
importuj pandy jako PDimportuj bibliotekę matplotlib.pyplot jako plt
df = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
ekstrakt_wartość = df.groupby('Oznaczenie')
drukuj(wyciąg_wartość.get_group('Personel'))
W oknie danych wyjściowych wyświetlany jest następujący wynik:
Dodaj wartość do listy grup
Podobne dane można wyświetlić w postaci listy za pomocą instrukcji groupby. Najpierw pogrupuj dane na podstawie warunku. Następnie, stosując tę funkcję, możesz łatwo umieścić tę grupę na listach.
Przykład
W tym przykładzie wstawiliśmy podobne rekordy do listy grup. Wszyscy pracownicy są dzieleni na grupę na podstawie „Miasto_pracownika”, a następnie poprzez zastosowanie funkcji „Lambda” ta grupa jest pobierana w postaci listy.
importuj pandy jako PDdf = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1=df.groupby('Miasto_pracowników')['Nazwiska_pracowników'].zastosuj(lambda group_series: group_series.notować()).reset_indeks()
drukuj(df1)
Użycie funkcji Transform z groupby
Pracownicy są pogrupowani według wieku, te wartości są sumowane i za pomocą funkcji 'transform' dodawana jest nowa kolumna w tabeli:
importuj pandy jako PDdf = pd.Ramka danych(
'Nazwiska_pracowników':['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
'Oznaczenie': ['Kierownik', 'Personel', 'Specjalista IT', 'Specjalista IT', 'HR', 'Personel', 'HR', 'Personel', 'Kierownik zespołu'],
'Miasto_pracownika':['Karaczi', 'Karaczi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
'Wiek_pracownika':[60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df['suma']=df.groupby(['Nazwiska_pracowników'])['Wiek_pracowników'].transform('suma')
drukuj(df)
Wniosek
W tym artykule omówiliśmy różne zastosowania wyrażenia groupby. Pokazaliśmy, w jaki sposób można podzielić dane na grupy, a stosując różne agregacje lub funkcje, można łatwo pobrać te grupy.