제퍼넷 로고

Pandas GroupBy를 효과적으로 사용하는 방법

시간

Pandas는 Python을 사용한 데이터 조작 및 분석을 위한 강력하고 널리 사용되는 오픈 소스 라이브러리입니다. 주요 기능 중 하나는 DataFrame을 하나 이상의 열을 기준으로 그룹으로 분할한 다음 각각에 다양한 집계 함수를 적용하여 groupby 함수를 사용하여 데이터를 그룹화하는 기능입니다.

 

Pandas GroupBy를 효과적으로 사용하는 방법
이미지 출처 : Unsplash
 

XNUMXD덴탈의 groupby 기능은 대규모 데이터 세트를 빠르게 요약하고 분석할 수 있으므로 매우 강력합니다. 예를 들어 특정 열을 기준으로 데이터 세트를 그룹화하고 각 그룹에 대한 나머지 열의 평균, 합계 또는 개수를 계산할 수 있습니다. 또한 여러 열로 그룹화하여 데이터를 보다 세부적으로 이해할 수 있습니다. 또한 복잡한 데이터 분석 작업을 위한 매우 강력한 도구가 될 수 있는 사용자 지정 집계 함수를 적용할 수 있습니다.

이 자습서에서는 Pandas의 groupby 기능을 사용하여 다양한 유형의 데이터를 그룹화하고 다양한 집계 작업을 수행하는 방법을 배웁니다. 이 자습서가 끝나면 이 기능을 사용하여 다양한 방식으로 데이터를 분석하고 요약할 수 있습니다.

개념은 잘 연습될 때 내면화되며 이것이 우리가 다음에 할 것입니다. 즉, Pandas groupby 기능을 직접 사용해 볼 것입니다. 다음을 사용하는 것이 좋습니다. 주피터 수첩 이 자습서에서는 각 단계에서 출력을 볼 수 있습니다.

샘플 데이터 생성

다음 라이브러리를 가져옵니다.

  • Pandas: 데이터 프레임을 만들고 그룹 기준을 적용하려면
  • Random – 무작위 데이터 생성
  • Pprint – 사전을 인쇄하려면
import pandas as pd
import random
import pprint

 

다음으로 빈 데이터 프레임을 초기화하고 아래와 같이 각 열의 값을 채웁니다.

df = pd.DataFrame()
names = [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard",
] major = [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology",
] yr_adm = random.sample(list(range(2018, 2023)) * 100, 15)
marks = random.sample(range(40, 101), 15)
num_add_sbj = random.sample(list(range(2)) * 100, 15) df["St_Name"] = names
df["Major"] = random.sample(major * 100, 15)
df["yr_adm"] = yr_adm
df["Marks"] = marks
df["num_add_sbj"] = num_add_sbj
df.head()

 

보너스 팁 – 동일한 작업을 수행하는 더 깔끔한 방법은 모든 변수와 값의 사전을 만들고 나중에 이를 데이터 프레임으로 변환하는 것입니다.

student_dict = { "St_Name": [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard", ], "Major": random.sample( [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology", ] * 100, 15, ), "Year_adm": random.sample(list(range(2018, 2023)) * 100, 15), "Marks": random.sample(range(40, 101), 15), "num_add_sbj": random.sample(list(range(2)) * 100, 15),
}
df = pd.DataFrame(student_dict)
df.head()

 

데이터 프레임은 아래에 표시된 것과 같습니다. 이 코드를 실행할 때 무작위 샘플을 사용하기 때문에 일부 값이 일치하지 않습니다.

 

Pandas GroupBy를 효과적으로 사용하는 방법

그룹 만들기

"주요" 주제별로 데이터를 그룹화하고 그룹 필터를 적용하여 이 그룹에 속하는 레코드 수를 확인합니다.

groups = df.groupby('Major')
groups.get_group('Electrical Engineering')

 

그래서 XNUMX명의 학생이 전기공학과에 속해 있습니다.

 

Pandas GroupBy를 효과적으로 사용하는 방법
 

둘 이상의 열(이 경우 Major 및 num_add_sbj)로 그룹화할 수도 있습니다. 

groups = df.groupby(['Major', 'num_add_sbj'])

 

열이 하나인 그룹에 적용할 수 있는 모든 집계 함수는 여러 열이 있는 그룹에 적용할 수 있습니다. 자습서의 나머지 부분에서는 단일 열을 예로 사용하여 다양한 유형의 집계에 중점을 두겠습니다.

"Major" 열에 groupby를 사용하여 그룹을 만들어 봅시다.

groups = df.groupby('Major')

직접 함수 적용

각 전공의 평균 점수를 찾고 싶다고 가정해 보겠습니다. 어떻게 하시겠습니까? 

  • 마크 열 선택
  • 평균 함수 적용
  • 반올림 기능을 적용하여 소수점 이하 두 자리까지 표시를 반올림합니다(선택 사항).
groups['Marks'].mean().round(2)

 

Major
Artificial Intelligence 63.6
Computer Engineering 45.5
Electrical Engineering 71.0
Electronic Engineering 92.0
Mechanical Engineering 64.5
Name: Marks, dtype: float64

 

골재

동일한 결과를 얻는 또 다른 방법은 아래와 같이 집계 함수를 사용하는 것입니다.

groups['Marks'].aggregate('mean').round(2)

 

함수를 문자열 목록으로 전달하여 여러 집계를 그룹에 적용할 수도 있습니다.

groups['Marks'].aggregate(['mean', 'median', 'std']).round(2)

 

Pandas GroupBy를 효과적으로 사용하는 방법
 

그러나 다른 열에 다른 기능을 적용해야 하는 경우에는 어떻게 해야 합니까? 괜찮아요. {column: function} 쌍을 전달하여 이를 수행할 수도 있습니다.

groups.aggregate({'Year_adm': 'median', 'Marks': 'mean'})

 

Pandas GroupBy를 효과적으로 사용하는 방법

변환

groupby()를 사용하여 쉽게 얻을 수 있는 특정 열에 대한 사용자 지정 변환을 수행해야 할 수도 있습니다. sklearn의 전처리 모듈에서 사용할 수 있는 것과 유사한 표준 스칼라를 정의해 보겠습니다. transform 메서드를 호출하고 사용자 지정 함수를 전달하여 모든 열을 변환할 수 있습니다.

def standard_scalar(x): return (x - x.mean())/x.std()
groups.transform(standard_scalar)

 

Pandas GroupBy를 효과적으로 사용하는 방법
 

"NaN"은 표준 편차가 XNUMX인 그룹을 나타냅니다.

필터

평균 학생 "점수"가 60 미만인 "전공"이 저조한지 확인하고 싶을 수 있습니다. 내부에 함수가 있는 그룹에 필터 방법을 적용해야 합니다. 아래 코드는 람다 함수 필터링된 결과를 얻기 위해.

groups.filter(lambda x: x['Marks'].mean() 60)

 

Pandas GroupBy를 효과적으로 사용하는 방법

먼저,

색인별로 정렬된 첫 번째 인스턴스를 제공합니다.

groups.first()

 

Pandas GroupBy를 효과적으로 사용하는 방법

설명

"describe" 메소드는 주어진 열에 대한 count, mean, std, min, max 등과 같은 기본 통계를 반환합니다.

groups['Marks'].describe()

 

Pandas GroupBy를 효과적으로 사용하는 방법

크기

크기는 이름에서 알 수 있듯이 레코드 수 측면에서 각 그룹의 크기를 반환합니다.

groups.size()

 

Major
Artificial Intelligence 5
Computer Engineering 2
Electrical Engineering 4
Electronic Engineering 2
Mechanical Engineering 2
dtype: int64

백작과 누니크

"개수"는 모든 값을 반환하는 반면 "Nunique"는 해당 그룹의 고유한 값만 반환합니다.

groups.count()

 

Pandas GroupBy를 효과적으로 사용하는 방법

 

groups.nunique()

 

Pandas GroupBy를 효과적으로 사용하는 방법

이름 바꾸기

원하는 대로 집계된 열의 이름을 바꿀 수도 있습니다.

groups.aggregate("median").rename( columns={ "yr_adm": "median year of admission", "num_add_sbj": "median additional subject count", }
)

 

Pandas GroupBy를 효과적으로 사용하는 방법
 

  • groupby의 목적을 명확히 하십시오. 다른 열의 평균을 얻기 위해 한 열로 데이터를 그룹화하려고 합니까? 또는 각 그룹의 행 수를 얻기 위해 여러 열로 데이터를 그룹화하려고 합니까?
  • 데이터 프레임의 인덱싱 이해: groupby 함수는 인덱스를 사용하여 데이터를 그룹화합니다. 열로 데이터를 그룹화하려면 열이 인덱스로 설정되어 있는지 확인하거나 .set_index()를 사용할 수 있습니다.
  • 적절한 집계 함수 사용: mean(), sum(), count(), min(), max()와 같은 다양한 집계 함수와 함께 사용할 수 있습니다.
  • as_index 매개변수를 사용합니다. False로 설정하면 이 매개변수는 그룹화된 열을 인덱스 대신 일반 열로 사용하도록 pandas에 지시합니다.

또한 pivot_table(), crosstab() 및 cut()과 같은 다른 pandas 함수와 함께 groupby()를 사용하여 데이터에서 더 많은 통찰력을 추출할 수 있습니다.

groupby 함수는 하나 이상의 열을 기반으로 데이터 행을 그룹화한 다음 그룹에서 집계 계산을 수행할 수 있으므로 데이터 분석 및 조작을 위한 강력한 도구입니다. 튜토리얼에서는 코드 예제를 통해 groupby 함수를 사용하는 다양한 방법을 보여주었습니다. 함께 제공되는 다양한 옵션과 데이터 분석에 어떻게 도움이 되는지 이해하는 데 도움이 되기를 바랍니다.

 
 
비디 추 확장 가능한 기계 학습 시스템을 구축하기 위해 제품, 과학 및 엔지니어링의 교차점에서 일하는 AI 전략가이자 디지털 혁신 리더입니다. 그녀는 수상 경력이 있는 혁신 리더이자 작가이자 국제 연사입니다. 그녀는 기계 학습을 민주화하고 모든 사람이 이 변화의 일부가 될 수 있도록 전문 용어를 깨는 임무를 수행하고 있습니다.
 

spot_img

최신 인텔리전스

spot_img