Pandas Groupby 집계

Pandas Groupby Jibgye



groupby 기술은 성능과 코드 크기 측면에서 데이터를 얼마나 잘 집계하기 때문에 필수적입니다. 'groupby'라는 용어는 일반적으로 다음 단계를 포함하는 절차를 설명합니다.

  • 파편 : 데이터셋에 특정 조건을 적용하여 데이터를 그룹으로 나눌 수 있습니다.
  • 지원 : 모든 그룹에 개별적으로 방법을 적용하는 프로세스입니다.
  • 결합 : groupby() 메소드를 사용하여 다양한 데이터셋을 결합하여 데이터 구조를 형성하는 절차입니다.

집계 과정에서 각 그룹에 대한 요약 통계가 계산됩니다. 각 그룹에 대해 집계 메서드는 집계된 값(단일 값)을 반환합니다. groupby 함수를 사용하여 데이터를 그룹으로 나눈 후 그룹화된 데이터에 대해 여러 집계 작업을 수행할 수 있습니다.







Pandas가 다양한 데이터 집계 방법을 제공하는 이유는 무엇입니까?

Pandas는 데이터 분석 및 집계에 도움이 되는 광범위한 기능을 제공합니다. 예를 들어, pivot(), groupby() 및 pivot_table() 메서드를 사용하면 각각 데이터가 집계되는 방식에 대해 서로 다른 관점을 제공합니다. 단순히 재포장하는 것이 아니라 다양한 작업을 수행할 수 있는 실용적인 접근 방식을 제공합니다.



Pandas에서 .agg() 함수를 사용하는 방법

단순 평균 또는 값의 합은 가장 자주 사용되는 집계 함수입니다. 데이터 프레임의 열 또는 여러 열을 사용하여 집계 함수를 호출할 수 있습니다. Pandas groupby 방법을 사용하여 데이터를 집계하는 여러 가지 방법을 볼 수 있습니다. 절차가 얼마나 쉬운지 보여주기 위해 아래에 제공된 몇 가지 예를 살펴보겠습니다. 합계, 최소값, 최대값, 평균 절대 편차, 표준 편차, 평균, 중앙값, 분산 및 곱과 같은 기본 수학 연산은 가장 자주 사용되는 내장 집계 함수입니다. 데이터를 요약하기 위해 groupby와 agg() 함수를 결합할 수 있습니다.



예제 # 01: groupby.agg() 함수를 사용하여 데이터를 그룹화하여 열 합계 결정

먼저 pd.DataFrame() 함수를 사용하여 데이터 프레임을 생성하여 데이터 프레임의 열 또는 열에서 데이터를 그룹화한 다음 평균 값을 결정할 수 있습니다. 데이터 프레임을 생성하기 전에 pandas 모듈과 numpy 라이브러리를 가져와야 합니다.





보시다시피 pandas 사전을 사용하여 데이터 프레임을 만들었습니다. 우리의 df 데이터 프레임에는 '환자' '그룹', '나이' 및 '혈액병'이라는 4개의 열이 있습니다. 데이터 값('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike')은 '환자' 열에 포함되는 반면 데이터 값('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) 및 ( 2, 3, 1, 1, 2, 3, 2, 1)은 각각 'group', 'age' 및 'blood_bottles' 열에 포함됩니다. 'group' 열의 값을 그룹화하여 'blood_bottles' 열의 값 합계를 결정해야 한다고 가정해 보겠습니다.



그룹 데이터 'A'의 경우 'blood_bottles' 값의 합은 7입니다. 그룹 값 'B' 및 'C'의 경우 'blood_bottles' 값의 합은 각각 2 및 6입니다. 여러 열을 그룹화하여 각 그룹의 합계를 결정할 수도 있습니다.

관찰할 수 있듯이 우리는 groupby() 함수 내부에 열 레이블 목록, 즉 ['환자', '그룹']을 전달하여 지정된 각 열에 범주 그룹을 생성했습니다. 지정된 열의 각 그룹에 대해 'blood_bottles'의 값 합계를 결정했습니다. 예를 들어, 'Ali'는 '그룹' 열 값 A 및 C에 있습니다. 그룹 A에서 Ali에 대한 'blood_bottles' 값의 합은 2이고 그룹 'C'에는 5입니다.

예제 # 02: groupby.agg() 함수를 사용하여 데이터 프레임의 단일 열에 여러 함수 적용

pandas 함수 agg()를 사용하여 'groupby()' 메서드로 여러 집계를 적용할 수 있습니다. 호출 가능한 목록은 메서드에 전달할 수 있습니다. numpy 라이브러리의 내장 메서드를 사용하여 데이터를 집계하는 방법을 살펴보겠습니다. 이전 예제와 달리 데이터 프레임의 단일 열에 여러 기능을 적용합니다. pd.DataFrame() 함수는 숫자 값을 포함하는 하나 이상의 열이 있는 이를 위한 데이터 프레임을 만드는 데 사용됩니다.


필요한 데이터 프레임이 하나의 숫자 열, 즉 41, 40, 35, 39, 49, 31, 34 및 42 값을 갖는 '마크'로 생성되었습니다. '학생', '과목' 및 '학위' 열이 3개 더 있습니다. groupby() 함수를 사용하여 그룹으로 나눌 수 있는 데이터 프레임에서. 'students' 및 'subjects' 열의 값은 ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') 및 ('C++' , '자바', '파이썬', '파이썬', 'AI', '자바', 'C++', 'AI'). 열 차수에는 데이터 값이 문자열로 포함됩니다(예: 'Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). 열 '주제'의 데이터를 그룹화하고 각 그룹화된 데이터에 대한 열 '마크'의 평균과 합계를 결정해야 한다고 가정합니다.

데이터를 범주 그룹으로 변환하기 위해 groupby() 함수 내에서 'subjects' 열의 이름을 문자열로 지정했습니다. 마크 열의 경우 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'인 4개의 열이 있습니다. 'player' 열에는 일부 플레이어의 이름을 문자열 데이터 값으로 저장했습니다('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin') 열 'least_score'에는 일부 경기(12, 34, 2, 21, 9, 1, 0, 34)에 대한 플레이어의 가장 낮은 점수가 있고 열 'highest_score'에는 플레이어의 최고 점수가 있습니다. (12, 34, 2, 21, 9, 1, 0, 34) 및 '위치' 열에는 선수들이 경기를 치른 경기장의 이름이 있습니다('프랑스', '영국', '두바이', ' 두바이', '영국', '프랑스', '두바이', '프랑스').

데이터를 'players' 열로 그룹화한 후 각 그룹에 대한 'least_score' 열 값의 평균과 'hightest_score' 데이터 값의 합계를 찾아야 한다고 가정해 보겠습니다.

agg() 함수 내에서 파이썬 사전 {'highest_score' : 'sum', 'least_score' : 'mean'}을 전달하여 각 그룹에 대해 지정된 열의 합계 및 평균 값을 찾습니다. 그룹화된 값 Alex는 'highest_score' 값의 합이 132이고 'least_score' 값의 평균이 17.5임을 알 수 있습니다. 'Fin'의 경우 값의 합은 199이고 평균은 'highest_score' 및 'least_score' 열에서 각각 18.3333333입니다. 그룹 값 Leo는 'highest_score'에서 180의 합계 값, 'least_score'에서 평균 7.666667의 값을 갖습니다.

결론

이 자습서에서는 팬더의 groupby() 및 집계 함수에 대해 논의했습니다. groupby.agg() 함수를 사용하는 방법도 논의했습니다. 이 기사에서는 단일 및 다중 열의 데이터를 그룹화하여 데이터 프레임 열에서 단일 집계 함수를 사용하는 방법, 데이터 프레임의 단일 열에 다중 집계 함수를 적용하는 방법 및 여러 groupby.agg() 함수를 사용하여 데이터 프레임의 여러 열에 대한 집계 함수.