데이터 분석/Python

pandas (3) : 기초 통계 함수 총정리 - describe, groupby, nunique, value_counts, count

cjangela 2025. 2. 10. 23:24

1. 기초 데이터 통계 계산

데이터 분석의 첫걸음 바로 데이터의 성질을 파악하는 것입니다. 어떤 데이터가 담겨 있는지, 평균이나 합계가 어떻게 되는지, 고유값의 개수는 몇 개인지 등을 살펴보면서 분석 방향을 설정하는 것이 중요합니다. 파이썬의 pandas 라이브러리를 활용하면 이러한 기본 통계 정보를 간단한 코드로 쉽게 확인이 가능합니다.

1) describe() 함수

  • describe()는 데이터의 전체적인 통계 요약을 한눈에 확인할 수 있는 함수입니다. 데이터프레임에서 숫자형(int, float 등) 컬럼을 중심으로 주요 통계 지표들을 출력합니다.
  • 예를 들어, int64의 데이터 타입을 가진 항목들이 있다면, describe()를 통해 개수(count), 평균(mean), 표준편차(std), 최솟값(min), 사분위수(25%, 50%, 75%), 최댓값(max) 등을 한 번에 확인할 수 있습니다
  • 분석 시작하기 전에 꼭 한 번은 실행해보시는 것을 추천드립니다.
df.describe()

describe를 통해 데이터 확인하기

2) 그룹화(GroupBy) 데이터 평균 계산

(1) 1차 그룹화: 하나의 기준으로 그룹화

  • "서울시 지하철호선별 역별 승하차 인원 정보" 파일을 기준으로, 사용일자별로 승차 총승객수의 평균값을 구하고 싶다면 다음과 같은 방식으로 코드를 작성합니다.
df.groupby("사용일자")

사용일자로 그룹화 진행하기

  • 먼저 사용일자를 기준으로 데이터 그룹화를 진행했습니다.
  • 그다음, 각 그룹에서 "승차총승객수" 컬럼의 평균값을 구하는 방식입니다. 
df.groupby("사용일자")["승차총승객수"].mean()

사용일자를 통해 그룹화 진행 후, 승차총생객수의 평균값 구하기

반응형

(2) 2차 그룹화: 두 개 이상의 기준으로 그룹화

  • 그룹화를 더 정교하게 하고 싶다면, 두 개 이상의 기준으로 그룹화할 수 있습니다.
  • 예를 들어,  사용일자와 호선명으로 그룹화를 진행한 후, 승차총승객수와 하차총승객수의 평균값을 구하는 코드는 다음과 같습니다.
df.groupby(["사용일자", "호선명"])

사용일자와 호선명으로 그룹화 진행하기

  • 먼저 사용일자와 호선명으로 그룹화를 하면 위의 값과 같이 출력됩니다.
  • 이제 여기에 사용일자별, 호설별로 나뉜 각 그룹에서 승차총승객수와 하차총승객의 평균값을 구해보겠습니다.
  • 괄호 위치와 개수에 유의해서 작성하는 것이 좋습니다.
# 승차총승객수의 평균값
df.groupby(["사용일자", "호선명"])["승차총승객수"].mean()

# 승차총승객수와 하차총승객수의 평균값
df.groupby(["사용일자", "호선명"])[["승차총승객수", "하차총승객수"]].mean()

사용일자, 호선명을 기준으로 그룹화 진행 후, 승차총승객수 평균값 구하기
사용일자별, 호선별 승차총승객수의 평균값
사용일자, 호선명을 기준으로 그룹화 진행 후, 승차총승객수, 하차총승객수 평균값 구하기
사용일자별, 호선별 승차총승객수 및 하차총객수 평균값

3) 그룹화 데이터 개수 세기

  • 데이터를 그룹화한 뒤에는 단순히 평균뿐만 아니라 개수를 세는 작업도 필요합니다. pandas에서는 다양한 방식으로 고윳값 개수, 특정 값의 빈도, 전체 데이터 수 등을 셀 수 있습니다. 

(1) nunique(): 고유값의 개수

  • nunique()은 고유한 값(unique value)의 개수를 세는 함수입니다.
  • 여기에서 n은 개수를 의미합니다.
  • 예를 들어, 호선별로 존재하는 역의 개수를 알고 싶다면 다음과 같이 작성할 수 있습니다.
df.groupby("호선명")["역명"].nunique()

nunique를 통해 데이터 고유 값 개수 세기

(2) value_counts(): 각 값의 빈도수

  • value_counts()는 특정 컬럼에 어떤 값이 얼마나 있는지 개수를 세어줍니다.
  • 각각의 값의 개수를 구해주는 것입니다.
  • 예를 들어, 호선별로 그룹화한 후, 각 역명이 몇 번 등장했는지를 알고 싶을 때 유용합니다.
df.groupby("호선명")["역명"].value_counts()

value_counts를 통해 각각의 값 개수 구하기

(3) count(): 전체 개수 세기

  • count()는 특정 컬럼에 비어 있지 않은 값의 개수를 세어줍니다. 즉, NaN을 제외한 값의 개수입니다.
  • 예를 들어, 호선별로 그룹화한 후, 역명 컬럼의 데이터 개수를 구할 때는 다음과 같은 코드를 사용합니다.
df.groupby("호선명")["역명"].count()

count를 통해 컬럼의 데이터 개수 구하기


이처럼 pandas에서는 데이터를 요약하고 분석하는 데 필수적인 다양한 함수들을 제공합니다. describe()로 전반적인 통계를 확인하고, groupby()를 활용해 그룹별 평균이나 개수를 계산함으로써 데이터에 대한 인사이트를 얻을 수 있습니다.

데이터 분석은 결국 '어떤 질문을 던지느냐'와 '그 질문을 코드로 어떻게 풀어내느냐'의 싸움입니다. 기초 통계와 그룹화 함수부터 차근차근 익혀나가며 분석 실력을 키워보세요!

감사합니다:-)