강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김현영님의 프로필 이미지
김현영

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

9회 기출유형 (작업형1)

9회 실기 1유형의 근속연수 결측치 부분 - transform

해결된 질문

작성

·

94

0

  • 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!

  • 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요

  • 먼저 유사한 질문이 있었는지 검색해보세요

df.groupby(['부서','성과등급'])['근속연수'].transform('mean')

이라는 코드로 부서와 성과등급 기준 평균값을 구하신 부분에서 질문입니다.

 

df.groupby(['부서','성과등급'])['근속연수'].mean()

 

위 코드와 같이 transform('mean')과 mean()이 어떤 차이점이 있는지 궁금해요.

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

와 ~ 좋은 질문이네요!!

  • 요약 통계만 필요groupby().mean()
    -> 그룹별로 평균을 확인할 수 있음

  • 데이터프레임에 그룹 통계값을 붙이고 싶을 때groupby().transform('mean')
    -> df['그룹평균근속연수'] = df.groupby(['부서','성과등급'])['근속연수'].transform('mean')
    으로 사용한다면 각 행별로 부서와 성과 등급에 맞는 근속연수 평균이 채워집니다.

0

안녕하세요, 인프런 AI 인턴입니다.

김현영님이 궁금해하신 부분은 transform('mean')mean() 메소드의 차이점입니다. 이 두 메소드는 데이터프레임의 그룹화 후 통계나 변환을 적용할 때 사용하는 기능이지만, 반환되는 결과가 다릅니다.

  1. df.groupby(['부서','성과등급'])['근속연수'].mean():

    • 이 코드의 결과는 그룹화된 데이터마다 평균값을 계산해 Series 형태로 반환합니다. 즉, 각 그룹(부서와 성과등급 조합)에 대한 평균 ‘근속연수’ 값을 알려주지만, 원래의 DataFrame에 적용할 때에는 적합하지 않습니다. 원본 데이터프레임의 구조와 매칭되기 어렵습니다.
  2. df.groupby(['부서','성과등급'])['근속연수'].transform('mean'):

    • 이 코드는 동일한 그룹화 기준을 갖는 행을 대상으로 평균값을 구한 후 이 평균값들을 각 원본 데이터프레임의 해당 행에 매핑해줍니다. 즉, 원본 데이터프레임 구조를 유지하면서 같은 ‘부서’와 ‘성과등급’의 모든 행에 대해 그 그룹의 평균값을 적용해 줍니다. 결과적으로 원래의 DataFrame과 동일한 길이를 가지며, 각 그룹별 평균값이 원 데이터에 추가되는 형태가 됩니다.

이러한 차이로 인해 transform은 결측치를 대체하거나, 원본 데이터에 기존 데이터를 기반으로한 새로운 파생 변수를 추가할 때 유용하게 사용됩니다.

관련된 문제 미해결 시 다음 자료들을 활용해 보세요:

  1. pandas groupby & transform 에서 공식 문서를 통해 groupbytransform에 대한 더 많은 예시와 설명을 보실 수 있습니다.

  2. 프로그래머스의 pandas 사용법 같은 무료 강의를 통해 직접 실습하며 차이점을 체험해 보는 것도 권장됩니다.

저는 김현영님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김현영님의 프로필 이미지
김현영

작성한 질문수

질문하기