Pandas groupby: как использовать Pandas DataFrame groupby ()

Метод groupby () Pandas DataFrame используется для разделения данных определенного набора данных на группы на основе некоторых критериев. Функция groupby () разделяет данные по любой из осей.

Pandas groupby ()

Pandas groupby — это встроенный метод, который используется для группировки объектов данных в серии (столбцы) или DataFrames (группа серий) на основе определенных индикаторов. Groupby в Python упрощает управление наборами данных, поскольку вы можете помещать связанные записи в группы.

Функция groupby () Pandas DataFrame включает в себя разделение объектов, применение некоторых функций и последующее объединение результатов. Обычно это делается для последней группы данных для кластеризации данных и извлечения значимой информации из данных.

Давайте взглянем на df.groupby () сам метод.

 импортировать панды как pddataset = {'Name'  : ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'],  'математика': ['93', '63', '74', '94', '83'], 'наука': ['88', '55', '66', '94', '35'  ], 'english': ['93', '74', '84', '92', '87']} df = pd.DataFrame (набор данных) by_name = df.groupby (['Name']) print (  by_name) 

Вывод

  

Что это за DataFrameGroupBy в выводе? Это .__ str __ (), которая не дает вам много информации о том, что это такое и как работает. Причина, по которой объект DataFrameGroupBy может быть сложной задачей для понимания, заключается в том, что он ленив. Он не выполняет никаких операций для получения полезного результата, пока вы об этом не скажете.

Один термин, который часто используется вместе с методом .groupby (), — это разделить-применить-объединить. Это относится к цепочке из следующих трех шагов:

  1. Разделить DataFrame на группы.
  2. Примените некоторые операции к каждому из этих меньших DataFrame.
  3. Объедините результаты.

Проверять df.groupby («Name») может быть сложно, потому что он практически ничего не делает эти вещи, пока вы что-то не сделаете с результирующим объектом. Опять же, объект Pandas GroupBy ленив. Это задерживает практически любую часть процесса разделения-применения-объединения до тех пор, пока вы не вызовете для него метод.

Итак, как вы можете разделить этапы разделения, применения и объединения, если вы не видите любое из них происходит изолированно? Один из полезных способов проверить объект Pandas GroupBy и увидеть разбиение в действии — это перебрать его. Это реализовано в DataFrameGroupBy. __iter __ () и выводит итератор пар ( group, DataFrame ) для DataFrames .

 import pandas  as pddataset = {'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04  ',' 05 '],' maths ': [' 93 ',' 63 ',' 74 ',' 94 ',' 83 '],' science ': [' 88 ',' 55'a '66',  '94', '35'], 'english': ['93', '74', '84', '92', '87']} df = pd.DataFrame (набор данных) by_name = df.groupby ([  'Name']) для имени, математические выражения в by_name: print (f "Первые 2 записи для {Name! R}") print ("--------------------  ---- ") print (maths.head (2), end ="  n  n ") 

Вывод

 Первые 2 записи для 'Arun' ------------------------ Имя Roll no maths science english1 Arun 02 63 55 743 Arun 04 94 94 92 Первые 2  записи для 'Rohit' ------------------------ Имя Roll no maths science english0 Rohit 01 93 88 93 Первые 2 записи для 'Shubh' ----  -------------------- Имя Roll no maths science english4 Shubh 05 83 35 87 Первые 2 записи для 'Sohit' -------------  -  --------- Имя Roll no maths science english2 Sohit 03 74 66 84 

Если вы работаете над сложной проблемой агрегирования, то итерация по объекту Pandas GroupBy может быть значительный способ визуализировать разделенную часть разделения-применения-комбинирования.

Есть очень мало других методов и свойств, которые позволяют вам изучить отдельные группы и их расщепления. Атрибут .groups предоставит вам словарь пар {group Name: group label} .

Теперь давайте перейдем к вернуться к его синтаксису.

Syntax

 DataFrame.groupby (by = None, axis = 0, level = None, as_index  = True, sort = True, group_keys = True, squeeze = False, ** kwargs) 

Параметры

Groupby ( ) содержит 7 параметров.

  1. by : используется для определения групп для groupby () сильная> функция. Его значение по умолчанию — none. Это функция отображения.
  2. axis : принимает целые значения; по умолчанию это 0.
  3. level : если ось представляет собой MultiIndex, который является иерархическим, группировка выполняется по определенному уровню или по нескольким уровням.
  4. as_index : имеет логический тип данных. Для агрегированного вывода мы возвращаем объект с метками группы в качестве индекса. Это актуально только для ввода DataFrame.
  5. sort : сортировка групповых ключей. Мы получаем лучшую производительность, отключив это.
  6. group_keys : он также имеет логический тип данных и по умолчанию имеет значение true. При вызове apply добавьте групповые ключи в индекс для идентификации частей.
  7. Squeeze : по умолчанию это также логический тип данных, это False . Если возможно, он уменьшает размерность возвращаемого типа. В противном случае он возвращает согласованный тип.

Возвращаемое значение

Функция groupby () возвращает объект groupby который содержит информацию о различных группах.

Пример программы на Pandas DataFrame groupby ()

Напишите программу, чтобы показать рабочую метода groupby () в Python.

 import pandas as pddataset = {'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],  «Нет»: [«01», «02», «03», «04», «05»], «Математика»: [«93», «63», «74», «94», «83 ».  '],' Science ': [' 88 ',' 55 ',' 66 ',' 94 ',' 35 '],' English ': [' 93 ',' 74 ',' 84 ',' 92 ',  '87']} df = pd.DataFrame (dataset) group = df.groupby ('Roll no') print (group.first ()) 

Вывод

 Name Maths Science EnglishRoll no01 Rohit 93 88 9302 Mohit 63 55 7403 Sohit 74 66 8404 Arun 94 94 9205 Shubh 83 35 87 

В приведенном выше примере мы можно увидеть, что существует набор данных, содержащий данные об ученике, и мы сгруппировали эти данные по номеру рулона.

Напишите программу для группировки данных по нескольким столбцам.

 импортируйте панд как pddataset = {'Name': ['Rohit',  'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'математика': ['  93, 63, 74, 94, 83], science: [88, 55, 66, 94, 35], english:  ['93', '74', '84', '92', '87']} df = pd.DataFrame (набор данных) group = df.groupby (['Name', 'Roll no']) print (group  .first ()) 

Вывод

 математика наука englishName Roll noArun 02 63 55 74 04 94 94 92Rohit 01 93 88 93Shubh  05 83 35 87Sohit 03 74 66 84 

В приведенном выше примере мы видим, что мы выполнили группировку по нескольким столбцам, то есть по имени и номеру рулона. Здесь мы видим, что у нас есть 2 Аруна в классе с разными номерами бросков; следовательно, группировка выполняется соответствующим образом.

Изучите Pandas df.groupby () на Jupyter Notebook

Jupyter Notebook от Anaconda является одним из необходимые инструменты для работы в области машинного обучения и анализа данных. Мы создадим DataFrame из внешних данных CSV, а затем воспользуемся методом groupby для извлечения данных в соответствии с различными требованиями.

Вы можете загрузить внешний файл из здесь .

Теперь мы будем использовать следующие два набора данных.

  1. рейтинги. csv
  2. kitchen.csv

Итак, мы создадим два DataFrames из этих CSV-данных. .

Давайте импортируем Pandas и создадим первый DataFrame с помощью метода Pandas read_csv ().

 импортируем pandas как pd 

Теперь, создать рейтинг _frame DataFrame.

 rating_frame = pd.read_csv ('rating.csv') rating_frame.head () 

Запустите ячейку, и вы получите следующее вывод.

Следующим шагом будет создание DataFrame kitchen_frame.

 kitchen_frame = pd.read_csv ('kitchen.csv') kitchen_frame.head () 

Из выходных данных DataFrame вы можете убедитесь, что оба DataFrames связаны через placeID .

Если вы изучили SQL, вы можете вспомнить концепцию первичного и внешнего ключей.

Итак, Внешний ключ в рейтингах _frame равен placeID .

Теперь давайте посчитаем рейтинги всех первых пяти placeID .

rating_frame содержит все необходимые данные. Итак, давайте использовать функцию groupby () для подсчета рейтинга placeID.

 rating_count = pd.DataFrame (rating_frame.groupby ('placeID') ['rating']. Count ()) rating_count.  head () 

Вы вызываете метод .groupby () и передаете имя столбца, по которому вы хотите сгруппировать, то есть « placeID» . Затем вы используете [« rating» ], чтобы определить столбцы, по которым вы должны выполнять фактическое агрегирование.

Вы можете передать гораздо больше, чем просто имя одного столбца в метод .groupby () в качестве первого аргумента. Вы также можете указать любое из следующего:

  1. Список с несколькими именами столбцов
  2. Серия dict или Pandas
  3. Numpy array или Pandas Index, или итерация в виде массива

Вы можете видеть, что мы получили количество оценок для первых пяти идентификаторов места.

Аналогичный запрос SQL будет выглядеть следующим образом.

 SELECT placeID, count (rating) FROM dfGROUP BY placeID; 

Pandas groupby против SQL groupby

Чаще всего емкость агрегирования сравнивается с предложением GROUP BY в SQL. Однако существуют различия между тем, как работают SQL GROUP BY и groupby () в DataFrame.

В отличие от SQL, метод Pandas groupby () не имеет концепции ссылок на порядковые позиции. Таким образом, вам нужно будет явно ссылаться на ключи группировки по имени.

Pandas DataFrames универсальны с точки зрения их способности манипулировать, изменять форму и изменять данные. Одной из выдающихся особенностей DataFrame является его способность агрегировать данные..

Методы объекта Pandas GroupBy

  1. Методы агрегирования « объединить »множество точек данных в агрегированную статистику по этим точкам данных. Например, вы можете взять сумму, среднее или медиану из 10 чисел, где результатом будет только одно число.
  2. Методы фильтрации возвращаются к вам с подмножеством исходного DataFrame. Чаще всего это означает использование метода .filter () для удаления целых групп на основе некоторой предварительной статистики об этой группе и ее подтаблице. Также имеет смысл включить в это определение несколько методов, исключающих определенные строки из каждой группы.
  3. Методы преобразования возвращают DataFrame с той же формой и индексами, что и оригинал, но с другими значениями. При использовании обоих методов агрегации и фильтрации результирующий DataFrame обычно будет меньше по размеру, чем входной DataFrame. Это не относится к преобразованию, которое преобразует сами отдельные значения, но сохраняет форму исходного DataFrame.
  4. Мета-методы в меньшей степени связаны с исходным объектом на который вы назвали .groupby () , и больше ориентирован на предоставление вам высокоуровневой информации, такой как количество групп и индексы этих групп.
  5. Методы построения имитируют API построения графиков для Pandas Series или DataFrame, но обычно разбивают вывод на несколько подзаголовков.

Заключение

Groupby — это метод в библиотеке Pandas, который группирует данные в соответствии с различными наборами переменных. Наконец, пример Pandas DataFrame groupby () завершен.

См. Также

Pandas DataFrame drop ()

Pandas DataFrame count ()

Pandas DataFrame loc

Pandas DataFrame reset_index ()

Pandas DataFrame describe ()

Оцените статью
nanomode.ru
Добавить комментарий