pandy

Jak korzystać z funkcji Group by w Pythonie Pandas

Jak korzystać z funkcji Group by w Pythonie Pandas
Pandas group by funkcja służy do grupowania obiektów DataFrames lub kolumn na podstawie określonych warunków lub reguł. Dzięki funkcji groupby zarządzanie zbiorem danych jest łatwiejsze. Jednak wszystkie powiązane rekordy można podzielić na grupy. Korzystając z biblioteki Pandy, możesz zaimplementować grupę Pandy według funkcji, aby pogrupować dane według różnych rodzajów zmiennych. Większość programistów zastosowała trzy podstawowe techniki grupowania według funkcji. Po pierwsze, podział, w którym dane dzielą się na grupy na podstawie określonych warunków. Następnie zastosuj określone funkcje do tych grup. Na koniec połącz dane wyjściowe w postaci struktury danych.

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 PD
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("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 PD
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', '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 PD
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('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 PD
importuj 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 PD
importuj 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 PD
importuj 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 PD
importuj 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 PD
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('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 PD
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['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.

Gry How to Show FPS Counter in Linux Games
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
Gry How to Install and Play Doom on Linux
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...