Pandas는 Python을 사용한 데이터 조작 및 분석을 위한 강력하고 널리 사용되는 오픈 소스 라이브러리입니다. 주요 기능 중 하나는 DataFrame을 하나 이상의 열을 기준으로 그룹으로 분할한 다음 각각에 다양한 집계 함수를 적용하여 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()
데이터 프레임은 아래에 표시된 것과 같습니다. 이 코드를 실행할 때 무작위 샘플을 사용하기 때문에 일부 값이 일치하지 않습니다.
그룹 만들기
"주요" 주제별로 데이터를 그룹화하고 그룹 필터를 적용하여 이 그룹에 속하는 레코드 수를 확인합니다.
groups = df.groupby('Major')
groups.get_group('Electrical Engineering')
그래서 XNUMX명의 학생이 전기공학과에 속해 있습니다.
둘 이상의 열(이 경우 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)
그러나 다른 열에 다른 기능을 적용해야 하는 경우에는 어떻게 해야 합니까? 괜찮아요. {column: function} 쌍을 전달하여 이를 수행할 수도 있습니다.
groups.aggregate({'Year_adm': 'median', 'Marks': 'mean'})
변환
groupby()를 사용하여 쉽게 얻을 수 있는 특정 열에 대한 사용자 지정 변환을 수행해야 할 수도 있습니다. sklearn의 전처리 모듈에서 사용할 수 있는 것과 유사한 표준 스칼라를 정의해 보겠습니다. transform 메서드를 호출하고 사용자 지정 함수를 전달하여 모든 열을 변환할 수 있습니다.
def standard_scalar(x): return (x - x.mean())/x.std()
groups.transform(standard_scalar)
"NaN"은 표준 편차가 XNUMX인 그룹을 나타냅니다.
필터
평균 학생 "점수"가 60 미만인 "전공"이 저조한지 확인하고 싶을 수 있습니다. 내부에 함수가 있는 그룹에 필터 방법을 적용해야 합니다. 아래 코드는 람다 함수 필터링된 결과를 얻기 위해.
groups.filter(lambda x: x['Marks'].mean() 60)
먼저,
색인별로 정렬된 첫 번째 인스턴스를 제공합니다.
groups.first()
설명
"describe" 메소드는 주어진 열에 대한 count, mean, std, min, max 등과 같은 기본 통계를 반환합니다.
groups['Marks'].describe()
크기
크기는 이름에서 알 수 있듯이 레코드 수 측면에서 각 그룹의 크기를 반환합니다.
groups.size()
Major
Artificial Intelligence 5
Computer Engineering 2
Electrical Engineering 4
Electronic Engineering 2
Mechanical Engineering 2
dtype: int64
백작과 누니크
"개수"는 모든 값을 반환하는 반면 "Nunique"는 해당 그룹의 고유한 값만 반환합니다.
groups.count()
groups.nunique()
이름 바꾸기
원하는 대로 집계된 열의 이름을 바꿀 수도 있습니다.
groups.aggregate("median").rename( columns={ "yr_adm": "median year of admission", "num_add_sbj": "median additional subject count", }
)
- groupby의 목적을 명확히 하십시오. 다른 열의 평균을 얻기 위해 한 열로 데이터를 그룹화하려고 합니까? 또는 각 그룹의 행 수를 얻기 위해 여러 열로 데이터를 그룹화하려고 합니까?
- 데이터 프레임의 인덱싱 이해: groupby 함수는 인덱스를 사용하여 데이터를 그룹화합니다. 열로 데이터를 그룹화하려면 열이 인덱스로 설정되어 있는지 확인하거나 .set_index()를 사용할 수 있습니다.
- 적절한 집계 함수 사용: mean(), sum(), count(), min(), max()와 같은 다양한 집계 함수와 함께 사용할 수 있습니다.
- as_index 매개변수를 사용합니다. False로 설정하면 이 매개변수는 그룹화된 열을 인덱스 대신 일반 열로 사용하도록 pandas에 지시합니다.
또한 pivot_table(), crosstab() 및 cut()과 같은 다른 pandas 함수와 함께 groupby()를 사용하여 데이터에서 더 많은 통찰력을 추출할 수 있습니다.
groupby 함수는 하나 이상의 열을 기반으로 데이터 행을 그룹화한 다음 그룹에서 집계 계산을 수행할 수 있으므로 데이터 분석 및 조작을 위한 강력한 도구입니다. 튜토리얼에서는 코드 예제를 통해 groupby 함수를 사용하는 다양한 방법을 보여주었습니다. 함께 제공되는 다양한 옵션과 데이터 분석에 어떻게 도움이 되는지 이해하는 데 도움이 되기를 바랍니다.
비디 추 확장 가능한 기계 학습 시스템을 구축하기 위해 제품, 과학 및 엔지니어링의 교차점에서 일하는 AI 전략가이자 디지털 혁신 리더입니다. 그녀는 수상 경력이 있는 혁신 리더이자 작가이자 국제 연사입니다. 그녀는 기계 학습을 민주화하고 모든 사람이 이 변화의 일부가 될 수 있도록 전문 용어를 깨는 임무를 수행하고 있습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://www.kdnuggets.com/2023/01/effectively-pandas-groupby.html?utm_source=rss&utm_medium=rss&utm_campaign=how-to-effectively-use-pandas-groupby
- 10
- 100
- 2018
- 2023
- 7
- 9
- a
- 능력
- 할 수 있는
- 달성
- 달성
- 추가
- 또한
- 집합
- AI
- All
- 수
- 분석
- 분석하다
- 및
- 다른
- 적용된
- 신청
- 적용
- 적당한
- 인조의
- 인공 지능
- 저자
- 가능
- 평균
- 수상 경력
- 기반으로
- 기본
- 이하
- 생명 공학
- 흩어져
- 빌드
- 계산하다
- 부름
- 케이스
- 검사
- 선명한
- 암호
- 단
- 열
- 왔다
- 복잡한
- 컴퓨터
- 컴퓨터 공학
- 만들
- 만들기
- 관습
- 데이터
- 데이터 분석
- 데이터 세트
- 민주화하다
- 시연
- 일탈
- 다른
- 디지털
- 디지털 전환
- 곧장
- 말라
- 마다
- 용이하게
- 효과적으로
- 전기 공학
- 전자
- 엔지니어링
- 등
- 사람
- 예
- 예
- 추출물
- 떨어지다
- 특징
- 채우기
- 필터링
- Find
- 먼저,
- 초점
- 수행원
- FRAME
- 에
- 기능
- 기능
- 생성
- 얻을
- 주어진
- 제공
- 가는
- 그룹
- 여러 떼
- 손 -에
- 도움
- 기대
- 방법
- How To
- HTML
- HTTPS
- import
- in
- 엄청나게
- 색인
- 혁신
- 통찰력
- 예
- 를 받아야 하는 미국 여행자
- 인텔리전스
- 국제 노동자 동맹
- 교차
- IT
- 특수 용어
- 너 겟츠
- 키
- 넓은
- 리더
- 배우다
- 배우기
- 도서관
- 도서관
- 명부
- 봐라.
- 기계
- 기계 학습
- 주요한
- 확인
- 시장 조작
- .
- 경기
- 최대
- 기계적인
- 기계 공학
- 매질
- 방법
- Mission
- 모듈
- 배우기
- 여러
- name
- 이름
- 필요
- 다음 것
- 번호
- ONE
- 오픈 소스
- 행정부
- 옵션
- 기타
- 팬더
- 매개 변수
- 부품
- 특별한
- 통과
- 수행
- 장소
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 강한
- 인쇄
- 프로덕트
- 제공
- 목적
- Python
- 빨리
- 닥치는대로의
- 추천
- 기록
- 정규병
- 나머지
- 대표
- 필요
- REST
- 결과
- 결과
- return
- 반품
- 리차드
- 반올림
- 달리는
- 같은
- 확장성
- 과학
- 세트
- 영상을
- 표시
- 비슷한
- 단일
- 크기
- 일부
- Speaker
- 구체적인
- 표준
- 통계
- 단계
- 전략가
- 학생
- 학생들
- 제목
- 제안
- 요약
- 시스템은
- 태스크
- 작업
- 말하다
- 조건
- XNUMXD덴탈의
- 팁
- 에
- 수단
- 변환
- 변환
- 변환
- 지도 시간
- 유형
- 이해
- 유일한
- 사용
- 마케팅은:
- 여러
- 방법
- 뭐
- 어느
- 의지
- 일하는
- 겠지
- X
- year
- 너의
- 제퍼 넷
- 제로