Pandas Groupby Aggregate

Pandas Groupby Aggregate



Техниката groupby е от съществено значение поради това колко добре агрегира данни по отношение както на производителността, така и на размера на кода. Терминът „groupby“ обикновено описва процедура, включваща следните стъпки:

  • Разделяне : Чрез прилагане на определени условия към набори от данни, можем да разделим данните на групи.
  • Прилагане : Процес, при който прилагаме индивидуално метод към всяка група.
  • Комбиниране : Процедура за комбиниране на различни набори от данни за формиране на структура от данни след използване на метода groupby().

В процеса на агрегиране се изчислява обобщена статистика за всяка група. За всяка група обобщеният метод връща обобщена стойност (единична стойност). Можем да извършим няколко операции за агрегиране на групирани данни, след като разделим данните на групи с помощта на функцията groupby.







Защо Pandas предоставя разнообразие от методи за агрегиране на данни?

Pandas предлага широк набор от характеристики и функции, които да помогнат при анализа и агрегирането на данни. Използването на методите pivot(), groupby() и pivot_table(), например, всеки от тях предлага различна гледна точка за това как данните ще бъдат агрегирани. Те предоставят практически подходи за изпълнение на различни задачи, вместо просто да бъдат преопаковани.



Как да използвате функцията .agg() в Pandas

Простата средна стойност или сбор от стойности е функцията за агрегиране, която се използва най-често. Можете да използвате колона на рамка с данни или няколко колони, за да извикате обобщена функция. Ще видите много начини за агрегиране на данни с помощта на метода Pandas groupby. За да демонстрираме колко по-лесна е процедурата, нека разгледаме някои примери, дадени по-долу. Основните математически операции като сума, минимум, максимум, средно абсолютно отклонение, стандартно отклонение, средна стойност, медиана, дисперсия и продукт са сред най-често използваните вградени функции за агрегиране. За да обобщим данните, можем да комбинираме groupby и функцията agg().



Пример # 01: Определяне на сумата от колони чрез групиране на данните с помощта на функция groupby.agg()

Първо ще създадем рамка с данни, като използваме функцията pd.DataFrame(), за да можем да групираме данните от колоната или колоните на рамката с данни и след това да определим тяхната средна стойност. Трябва да импортираме модулите на pandas и библиотеката numpy, преди да създадем рамката с данни.





Както можете да видите, използвахме речника на pandas, за да създадем нашата рамка с данни. Нашата df рамка с данни има четири колони: „пациент“, „група“, „възраст“ и „бутилки с кръв“. Стойностите на данните („Али“, „Джон“, „Майк“, „Майк“, „Джон“, „Али“, „Али“, „Майк“) се съдържат в колона „пациент“, докато стойностите на данните („A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) и ( 2, 3, 1, 1, 2, 3, 2, 1) се съдържат съответно в колоните „група“, „възраст“ и „кървави_бутилки“. Да предположим, че трябва да определим сумата от стойностите в колоната „blood_bottles“, като групираме стойностите в колоната „group“.



За групови данни „A“, сумата от стойностите на „blood_bottles“ е 7. За групови стойности „B“ и „C“, сумата от стойностите на „blood_bottles“ е съответно 2 и 6. Можем също да групираме няколко колони, за да определим сумата за всяка група.

Както може да се забележи, ние сме предали списък с етикети на колони, т.е. [„пациент“, „група“] във функцията groupby(), за да създадем групи от категории във всяка посочена колона. За всяка група от посочени колони сме определили сумата от стойности в „blood_bottles“. Например, „Ali“ е в стойностите A и C на колоната „group“. В група A сумата от стойностите на „blood_bottles“ за Ali е 2 и 5 в групата „C“.

Пример # 02: Прилагане на множество функции върху една колона от рамка с данни с помощта на функция groupby.agg()

Множество агрегации могат да бъдат приложени с метода „groupby()“, като се използва функцията pandas agg(). Към метода може да бъде предаден извикващ списък. Нека да разгледаме как можем да агрегираме нашите данни, като използваме вградените методи на библиотеката numpy. За разлика от предишния пример, ние ще приложим множество функции към една колона на рамката с данни. Функцията pd.DataFrame() ще се използва за създаване на рамка с данни за това с поне една колона, съдържаща числови стойности.


Необходимата рамка с данни е създадена с една цифрова колона, т.е. „оценки“ със стойности 41, 40, 35, 39, 49, 31, 34 и 42. Има още 3 колони „студент“, „предмети“ и „степен“ в нашата рамка с данни, която може да бъде разделена на групи с помощта на функцията groupby(). Стойностите в колона „студенти“ и „предмети“ са („Хари“, „Рон“, „Хари“, „Лана“, „Сам“, „Рон“, „Лана“, „Макс“) и („C++“ , „JAVA“, „Python“, „Python“, „AI“, „JAVA“, „C++“, „AI“). Докато степента на колоната съдържа стойностите на данните като низове, т.е. („Ms“, „Bs“, „Bs“, „Ms“, „Ms“, „Ms“, „Bs“, „Bs“). Да предположим, че трябва да групираме данните от колоната „субекти“ и да определим както средната стойност, така и сумата от колоните „марки“ за всяка групирана информация.

Посочили сме името на колоната „теми“ като низ във функцията groupby(), за да конвертираме данните в групи от категории. За колоната с оценки сме използвали метода agg(), а вътре във функцията agg() сме посочили функциите numpy np.sum и np.mean, за да намерим сумата и средната стойност на оценките на всяка група данни в колони теми. Сумата и средната стойност за стойността на групата „AI“ са съответно 91 и 45,5. Сумата от оценките за стойността „C++“ е 75, а средната стойност е 37,5. За групата JAVA сумата от оценки е 71, а средната стойност е 35,5, докато сумата и средната стойност за Python са съответно 74 и 37.

Пример # 03: Прилагане на множество функции върху множество колони на рамката с данни с помощта на функция groupby.agg()

Вместо да прилагаме различни функции към една колона на рамка с данни, можем да приложим множество функции към различни цифрови колони. Можем да използваме речник във функцията agg() като вход за прилагане на конкретен метод на агрегиране към различни колони на рамка с данни. Нека импортираме библиотеките pandas и numpy, преди да създадем рамка с данни с множество цифрови колони.

Има четири колони в новосъздадената рамка с данни с имената „player“, „least_score“, „highest_score“ и „location“. В колоната „играч“ сме съхранили имената на няколко играчи като стойности на низови данни („Лео“, „Алекс“, „Лео“, „Фин“, „Лео“, „Алекс“, „Фин“, „ Fin'), в колона 'least_score' има най-ниски резултати на играчи за някои мачове (12, 34, 2, 21, 9, 1, 0, 34), докато в колона 'highest_score' имаме най-високите резултати на играчите (12, 34, 2, 21, 9, 1, 0, 34) и в колона „локация“ има имената на местата, където играчите са играли своите мачове („Франция“, „Англия“, „Дубай“, „ Дубай“, „Англия“, „Франция“, „Дубай“, „Франция“).

Да предположим, че след групирането на данните в колоната „играчи“, трябва да намерим средната стойност за стойностите на колоната „least_score“ и сумата за стойностите на данните „hightest_score“ за всяка група.

Във функцията agg() предадохме речник на Python {‘highest_score’ : ‘sum’, ‘least_score’ : ‘mean’}, за да намерим сумата и средната стойност за определена колона спрямо всяка група. Може да се види, че групираната стойност Alex има сбор от стойността на „highest_score“ 132 и средната стойност на стойността на „least_score“ 17,5. За „Fin“ сумата от стойностите е 199, а средната стойност е 18,3333333 съответно в колоните „highest_score“ и „least_score“. Стойността на групата Leo има сумарна стойност от 180 в „highest_score“ и средна стойност от 7,666667 в „least_score“.

Заключение

В този урок обсъдихме функциите groupby() и агрегиране в pandas. Обсъдихме също как да използваме функцията groupby.agg(). Ние внедрихме три примера в тази статия, за да ви научим как да използвате една функция за агрегиране в колона с рамка за данни, като групирате данните от една и няколко колони, как да прилагате множество функции за агрегиране върху една колона от рамка с данни и как да прилагате множество функции за агрегиране на множеството колони на рамката с данни с помощта на функцията groupby.agg().