панди

Как да използвам Group by в Pandas Python

Как да използвам Group by в Pandas Python
Pandas group by function се използва за групиране на обекти или колони на DataFrames въз основа на определени условия или правила. Използването на функцията groupby управлява набора от данни по-лесно. Всички свързани записи обаче могат да бъдат подредени в групи. Използвайки библиотеката Pandas, можете да приложите групата Pandas по функция, за да групирате данните според различни видове променливи. Повечето разработчици използваха три основни техники за групата по функции. Първо, разделяне, при което данните се разделят на групи въз основа на някои конкретни условия. След това приложете определени функции към тези групи. В крайна сметка комбинирайте изхода под формата на структура от данни.

В тази статия ще разгледаме основните употреби на група по функция в python на panda. Всички команди се изпълняват в редактора на Pycharm.

Нека обсъдим основната концепция на групата с помощта на данните на служителя. Създадохме кадър с някои полезни подробности за служителите (Employee_Names, Designation, Employee_city, Age).

Конкатенация на низове с помощта на Group by Function

С помощта на функцията groupby можете да обединявате низове. Същите записи могат да бъдат обединени с ',' в една клетка.

Пример

В следващия пример сме сортирали данни въз основа на колоната „Определение“ на служителите и сме се присъединили към служителите, които имат същото наименование. Ламбда функцията се прилага върху „Employees_Name“.

импортирайте панди като pd
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ("Обозначение") ['Имена на служителите'].кандидатствайте (lambda Employee_Names: ','.присъединете се (Employee_Names))
печат (df1)

Когато се изпълни горният код, се показва следният изход:

Сортиране на стойности във възходящ ред

Използвайте обекта groupby в обикновен кадър от данни, като извикате '.to_frame () 'и след това използвайте reset_index () за повторно индексиране. Сортирайте стойностите на колоните чрез извикване на sort_values ​​().

Пример

В този пример ще сортираме възрастта на служителя във възходящ ред. Използвайки следната част от кода, ние извличаме „Employee_Age“ във възходящ ред с „Employee_Names“.

импортирайте панди като pd
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Employee_Age'].сума ().to_frame ().reset_index ().сортиране_ценности (от = 'Служител_Възраст')
печат (df1)

Използване на агрегати с groupby

Налични са редица функции или обобщения, които можете да приложите върху групи данни, като count (), sum (), mean (), median (), mode (), std (), min (), max ().

Пример

В този пример използвахме функция „count ()“ с groupby, за да преброим служителите, които принадлежат към същия „Employee_city“.

импортирайте панди като pd
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_city').броя()
печат (df1)

Както можете да видите следния изход, под колоните Designation, Employee_Names и Employee_Age пребройте числата, които принадлежат към същия град:

Визуализирайте данните с помощта на groupby

С помощта на 'import matplotlib.pyplot ', можете да визуализирате данните си в графики.

Пример

Тук следващият пример визуализира „Employee_Age“ с „Employee_Nmaes“ от дадената DataFrame с помощта на оператора groupby.

импортирайте панди като pd
импортиране на matplotlib.pyplot като plt
dataframe = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
plt.clf ()
рамка за данни.groupby ('Employee_Names').сума ().парцел (вид = 'бар')
plt.покажи ()

Пример

За да начертаете подредената графика с помощта на groupby, завъртете 'stacked = true' и използвайте следния код:

импортирайте панди като pd
импортиране на matplotlib.pyplot като plt
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df.groupby (['Employee_city', 'Employee_Names']).размер ().дестакиране ().парцел (kind = 'bar', stacked = True, fontsize = '6')
plt.покажи ()

В дадената по-долу графика броят на заетите служители, които принадлежат към същия град.

Променете името на колоната с групата по

Можете също така да промените обобщеното име на колона с ново модифицирано име, както следва:

импортирайте панди като pd
импортиране на matplotlib.pyplot като plt
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Обозначение'].сума ().reset_index (name = 'Employee_Designation')
печат (df1)

В горния пример името „Обозначение“ се променя на „Employee_Designation“.

Извличане на група по ключ или стойност

Използвайки оператора groupby, можете да извлечете подобни записи или стойности от рамката с данни.

Пример

В дадения по-долу пример имаме групови данни въз основа на „Обозначение“. След това групата „Персонал“ се извлича с помощта на .getgroup ('Персонал').

импортирайте панди като pd
импортиране на matplotlib.pyplot като plt
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
извличане_стойност = df.groupby („Обозначение“)
отпечатване (екстракция_стойност.get_group ('Персонал'))

Следният резултат се показва в изходния прозорец:

Добавяне на стойност в списъка с групи

Подобни данни могат да бъдат показани под формата на списък с помощта на оператора groupby. Първо групирайте данните въз основа на условие. След това, като приложите функцията, можете лесно да включите тази група в списъците.

Пример

В този пример сме вмъкнали подобни записи в списъка с групи. Всички служители са разделени в групата въз основа на 'Employee_city' и след това чрез прилагане на функцията 'Lambda' тази група се извлича под формата на списък.

импортирайте панди като pd
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_city') ['Employee_Names'].кандидатстване (lambda group_series: group_series.tolist ()).reset_index ()
печат (df1)

Използване на функцията за преобразуване с groupby

Служителите са групирани според възрастта им, тези стойности се събират и с помощта на функцията „преобразуване“ се добавя нова колона в таблицата:

импортирайте панди като pd
df = pd.DataFrame (
'Employee_Names': ['Sam', 'Ali', 'Umar', 'Raees', 'Mahwish', 'Hania', 'Mirha', 'Maria', 'Hamza'],
„Назначение“: [„Мениджър“, „Персонал“, „ИТ служител“, „ИТ служител“, „HR“, „Персонал“, „HR“, „Персонал“, „Ръководител на екип“],
'Employee_city': ['Karachi', 'Karachi', 'Islamabad', 'Islamabad', 'Quetta', 'Lahore', 'Faislabad', 'Lahore', 'Islamabad'],
„Служител_Възраст“: [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df ['сума'] = df.groupby (['Employee_Names']) ['Employee_Age'].преобразуване ('сума')
печат (df)

Заключение

В тази статия разгледахме различните приложения на оператора groupby. Показахме как можете да разделите данните на групи и като прилагате различни обобщения или функции, можете лесно да извлечете тези групи.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...