꾸준히 성장하기

[D+23] 오답노트 | .groupby() .loc[] 사용법 본문

KT 에이블스쿨 5기/오답노트

[D+23] 오답노트 | .groupby() .loc[] 사용법

data.dohii 2024. 3. 14. 23:23

안녕하세요, 오늘은 제가 최근 데이터 분석을 하면서 많이 사용하게 된 pandas의 .groupby()와 .loc[]에 대해 이야기해보려고 합니다.

특히 이 두 기능은 데이터를 다루면서 정말 자주 마주치게 되는데요, 저만 해도 처음에는 어려움을 겪었던 부분이기에 오늘은 이 두 기능을 제대로 정리해보려고 합니다.


1. .groupby( ) 의 활용

1) 단일 열로 그룹화

데이터를 분석할 때 특정 카테고리별로 통계나 요약을 내고 싶은 경우가 많죠. 

pandas의 .groupby() 함수를 사용하면 이 작업이 꽤 간단해집니다. 

먼저, 단일 열을 기준으로 데이터를 그룹화하는 방법부터 살펴보겠습니다.

예를 들어, 우리가 고객 데이터에서 주소('Addr1')별로 고객 수를 세고 싶다면, 아래와 같이 코드를 작성할 수 있어요.

 

tmp = cst.groupby(by='Addr1', as_index=False)['CustomerID'].count()

 

이 코드는 'Addr1' 열의 각 고유값을 기준으로 데이터를 그룹화하고, 각 그룹에 속한 고객 ID('CustomerID')의 수를 세어 새로운 데이터프레임에 저장합니다. 

여기서 as_index=False 옵션은 'Addr1'을 인덱스로 사용하지 않고 별도의 열로 유지하겠다는 뜻이에요. 이 옵션 덕분에 결과물을 더 읽기 쉽게 만들 수 있죠.

 

2) 여러 열로 그룹화

이제 조금 더 상세한 분류를 위해 여러 열을 기준으로 데이터를 그룹화하는 방법을 살펴볼게요. 고객의 지역('Addr1')과 유형('Type')을 기준으로 데이터를 그룹화하고자 할 때는 아래와 같이 작성합니다.

 

tmp = cst.groupby(by=['Addr1', 'Type'], as_index=False)['CustomerID'].count()

 

이렇게 하면 우리는 주소와 고객 유형의 조합에 따라 세분화된 데이터를 얻을 수 있어요. 결과적으로, 'Addr1', 'Type', 그리고 해당 조합에 대한 'CustomerID'의 개수를 열로 가지는 tmp 데이터프레임을 얻게 됩니다.

 

2. .loc[ ] 의 활용

loc는 데이터프레임에서 라벨 기반의 선택을 위해 사용되며, 행과 열을 선택할 때 매우 유용합니다.

loc를 사용할 때 대괄호 안에 들어갈 수 있는 요소들은 다음과 같습니다.

 

# 단일 열 선택
df.loc[ :, 'column_name']
# 여러 열 선택
df.loc[ :, ['column_name_1', 'column_name_2']]
# 조건에 맞는 행 선택
df.loc[df['column_name'] > value]
# 조건에 맞는 행과, 특정 열 선택
df.loc[df['column_name'] > value, 'another_column_name']
# 슬라이스를 통한 행 선택
df.loc['row_label_1':'row_label_2']

 

아래는 특정 고객 ID를 가진 데이터만 선택하는 예시입니다.

 

selected_data = cst.loc[cst['CustomerID'] == '특정값', ['Addr1', 'Type']]

 

여기서 'CustomerID' == '특정값'은 특정 고객 ID를 가진 행을 선택하라는 조건이고, ['Addr1', 'Type']은 해당 행들에서 'Addr1'과 'Type' 열만 선택하라는 의미입니다.

 


데이터 분석에 있어 이러한 도구들의 활용은 매우 중요한데요, 실제 데이터셋에 적용해보면서 그 사용법에 익숙해지는 것이 좋습니다. 

저도 처음에는 많이 헤맸지만, 여러 번 시도하고 다양한 데이터셋에 적용해보니 점점 더 감이 잡히기 시작했어요. 

여러분도 이 글을 참고하여 한 단계 성장하길 바랍니다🔥

반응형