728x90
대부분 groupby 를 활용해서 sum, mean, count, std 출력을 벗어나지 못하리라 생각합니다.
하지만 단순히 groupby로 요소를 그룹화한 결과를 보고 싶으셨던 적 있지 않나요?
예를 들어 회원 정보에서 거주지별로 몇 명이 사는지를 구하는 것이 아니라
거주지 별로 누가누가 사는지 명단을 뽑아보고 싶은 것과 같은 상황 말이죠
타이타닉 예시를 가지고 설명드려볼 수 있을 것 같은데요
df.groupby('Pclass')['Name'].count()
Out:
Pclass
1 216
2 184
3 491
Name: Name, dtype: int64
위와 같은 방식으로 Pclass(등급)별 탑승 인원 수가 몇명인지 정도를 뽑아보는게 일반적인 경우겠죠?
그런데 각 Pclass에 누가누가 타고 있는지는 전혀 알 수가 없고, 리스트로 뽑고 싶을 때도 있겠죠?
그럴 때는 아래와 같이 간단하게 코드를 작성할 수 있습니다.
df.groupby('Pclass')['Name'].apply(list).reset_index()
위와 같이 코드를 작성하면 각 Pclass에 누가누가 타고 있는지 명단을 리스트로 뽑을 수 있습니다.
코드를 살펴보면 Pclass 기준으로 groupby를 해서 등급별로 묶여진 Name을 list로 apply하는 것을
확인할 수 있습니다.
df.groupby('Age')['Name'].apply(list).reset_index()
Pclass 대신에 Age를 쓰면 동갑내기 친구는 누가누가 있는지도 눈으로 확인할 수 있겠죠?
이제 특정 그룹별로 데이터를 모아보기 위해 온갖 for문과 if문을 남발하거나,
groupby sum으로 문자열을 모두 합친 뒤 split하면서 리스트를 만드는 수고를 지금까지 하셨다면
앞으로는 위와 같이 한 줄로 깔끔하게 끝내시는 것을 추천합니다
728x90
728x90
'파이썬 코딩 한줄' 카테고리의 다른 글
[pandas apply] 텍스트를 일정 길이만큼 잘라서 분리하기 (0) | 2022.10.14 |
---|---|
아직도 셀레니움(Selenium)에서 벗어나지 못했다면... (0) | 2022.10.10 |
이미지 URL에서 이미지 파일 다운받기 (0) | 2022.09.16 |
파이썬 print와 return의 차이가 헷깔리는 이유는? (0) | 2022.02.26 |
주피터노트북에서 그래프 사용 시 문제 해결 Tip (0) | 2022.02.18 |