панды

Как использовать Group by в Pandas Python

Как использовать Group by в Pandas Python
Группа Pandas по функциям используется для группировки объектов или столбцов DataFrames на основе определенных условий или правил. Использование функции группировки упрощает управление наборами данных. Однако все связанные записи можно объединить в группы. Используя библиотеку Pandas, вы можете реализовать группу Pandas по функциям, чтобы сгруппировать данные в соответствии с различными типами переменных. Большинство разработчиков использовали три основных метода для группировки по функциям. Во-первых, разбиение, при котором данные делятся на группы в зависимости от определенных условий. Затем примените к этим группам определенные функции. В конце объедините вывод в виде структуры данных.

В этой статье мы рассмотрим основные способы использования группы по функциям в panda python. Все команды выполняются в редакторе Pycharm.

Обсудим основную концепцию группы с помощью данных сотрудника. Мы создали фреймворк с некоторыми полезными данными о сотрудниках (Employee_Names, Designation, Employee_city, Age).

Конкатенация строк с использованием группы по функциям

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

Пример

В следующем примере мы отсортировали данные на основе столбца «Обозначение сотрудников» и объединили сотрудников с таким же назначением. Лямбда-функция применяется к "Employees_Name".

импортировать панд как pd
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ("Обозначение") ['Employee_Names'].apply (лямбда Employee_Names: ','.присоединиться (Employee_Names))
печать (df1)

Когда приведенный выше код выполняется, отображаются следующие выходные данные:

Сортировка значений в порядке возрастания

Используйте объект groupby в обычном фрейме данных, вызвав '.to_frame () ', а затем используйте reset_index () для переиндексации. Сортировка значений столбцов путем вызова sort_values ​​().

Пример

В этом примере мы отсортируем возраст сотрудника в порядке возрастания. Используя следующий фрагмент кода, мы получили «Employee_Age» в порядке возрастания с «Employee_Names».

импортировать панд как pd
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Employee_Age'].сумма ().к кадру().reset_index ().sort_values ​​(по = 'Employee_Age')
печать (df1)

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

Доступен ряд функций или агрегатов, которые можно применять к группам данных, например count (), sum (), mean (), median (), mode (), std (), min (), max ().

Пример

В этом примере мы использовали функцию count () с groupby для подсчета сотрудников, принадлежащих к одному и тому же Employee_city.

импортировать панд как pd
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_city').считать()
печать (df1)

Как вы можете видеть в следующих выходных данных, в столбцах «Назначение», «Имя сотрудника» и «Возраст сотрудника» подсчитайте числа, принадлежащие одному городу:

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

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

Пример

Здесь следующий пример визуализирует «Employee_Age» с «Employee_Nmaes» из заданного DataFrame с помощью оператора groupby.

импортировать панд как pd
импортировать matplotlib.pyplot как plt
dataframe = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
plt.clf ()
фрейм данных.groupby ('Имена сотрудников').сумма ().сюжет (вид = 'бар')
plt.показывать()

Пример

Чтобы построить диаграмму с накоплением с помощью groupby, включите параметр stacked = true и используйте следующий код:

импортировать панд как pd
импортировать matplotlib.pyplot как plt
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [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»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_Names') ['Обозначение'].сумма ().reset_index (имя = 'Employee_Designation')
печать (df1)

В приведенном выше примере имя «Обозначение» изменено на «Employee_Designation».

Получить группу по ключу или значению

Используя оператор groupby, вы можете получить похожие записи или значения из фрейма данных.

Пример

В приведенном ниже примере у нас есть групповые данные на основе «Обозначения». Затем группа «Персонал» извлекается с помощью .getgroup ('Персонал').

импортировать панд как pd
импортировать matplotlib.pyplot как plt
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
extract_value = df.groupby ("Обозначение")
print (extract_value.get_group ('Персонал'))

В окне вывода отображается следующий результат:

Добавить значение в список группы

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

Пример

В этом примере мы вставили похожие записи в список группы. Все сотрудники делятся на группы на основе «Employee_city», а затем, применяя функцию «Лямбда», эта группа извлекается в виде списка.

импортировать панд как pd
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df1 = df.groupby ('Employee_city') ['Employee_Names'].применить (лямбда group_series: group_series.к списку()).reset_index ()
печать (df1)

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

Сотрудники группируются по возрасту, эти значения складываются вместе, и с помощью функции преобразования в таблицу добавляется новый столбец:

импортировать панд как pd
df = pd.DataFrame (
«Employee_Names»: [«Сэм», «Али», «Умар», «Раис», «Махвиш», «Хания», «Мирха», «Мария», «Хамза»],
«Обозначение»: [«Менеджер», «Персонал», «ИТ-специалист», «ИТ-специалист», «HR», «Персонал», «HR», «Персонал», «Руководитель группы»],
"Employee_city": ["Карачи", "Карачи", "Исламабад", "Исламабад", "Кветта", "Лахор", "Файслабад", "Лахор", "Исламабад"],
"Employee_Age": [60, 23, 25, 32, 43, 26, 30, 23, 35]
)
df ['сумма'] = df.groupby (['Employee_Names']) ['Employee_Age'].преобразовать ('сумма')
печать (df)

Заключение

В этой статье мы исследовали различные варианты использования оператора groupby. Мы показали, как вы можете разделить данные на группы, и, применяя различные агрегаты или функции, вы можете легко получить эти группы.

Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...
Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...
Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...