본문 바로가기
두두 IT/파이썬

[PYTHON-Pandas 03-02] 데이터를 정렬, 통계, 그룹 명령어

by DoDo's 2026. 5. 4.
반응형

데이터를 정렬하고, 통계를 내고, 그룹으로 묶을 때 사용하는 필수 명령어들입니다.


1. 데이터 줄세우기 (정렬)

  • df.sort_index(): 행 이름(인덱스)을 기준으로 가나다/알파벳 순으로 정렬합니다.
    • 옵션: axis=1을 넣으면 열(컬럼) 이름을 기준으로 정렬합니다.
  • df.sort_values(by='컬럼명'): 특정 컬럼 안에 있는 실제 데이터 값을 기준으로 정렬합니다.
    • 옵션: ascending=False를 추가하면 내림차순(큰 것부터)으로 정렬됩니다. 결측치는 항상 맨 마지막에 옵니다.

2. 기술 통계 및 집계 (데이터 요약)

  • df.sum() / df.mean() / df.median(): 각각 합계, 평균, 중앙값을 구합니다.
  • df.max() / df.min(): 최대값, 최소값을 구합니다.
  • df.count(): 결측치(빈칸)를 제외한 진짜 데이터의 개수만 셉니다.
  • df.idxmax() / df.idxmin(): 최대값 또는 최소값이 있는 곳의 인덱스(위치)를 찾아줍니다.
  • df.unique() / df.nunique(): 중복을 제거한 고유값들이 무엇인지, 그리고 그 고유값이 몇 개인지 알려줍니다.
  • df.agg(['min', 'max', 'mean']): 여러 개의 통계값을 한 번에 뽑아보고 싶을 때 사용합니다. (딕셔너리 형태로 컬럼마다 다른 통계를 낼 수도 있습니다.)

3. 데이터 묶어서 분석하기 (그룹화 & 피벗)

  • df.groupby('기준컬럼')['계산할컬럼'].집계함수(): 성별, 부서별 등 특정 기준(범주)으로 데이터를 묶어서 집계합니다.
    • 예시: df.groupby('부서')['연봉'].mean() (부서별 연봉 평균)
  • df.pivot_table(index='행기준', columns='열기준', values='계산대상', aggfunc='집계함수'): 엑셀의 피벗 테이블처럼 데이터를 2차원 표 형태로 예쁘게 재배치하여 요약해 줍니다.

4. 데이터 모양 바꾸기 (구간 나누기 & 일괄 적용)

  • pd.cut(데이터, bins=[구간리스트], labels=[이름리스트]): 수치형 데이터(예: 나이, 점수)를 특정 구간으로 잘라서 그룹(예: 유아, 청년, 장년)으로 만들어 줍니다.
  • df['컬럼명'].apply(함수명): for문(반복문)을 쓰지 않고도, 데이터의 모든 원소나 행/열 단위로 내가 만든 함수를 일괄적으로 쫘악 적용시켜 줍니다.

💡 1단계: 마법의 공통 옵션 3가지 (파라미터)

통계 함수 괄호 () 안에 넣어서 계산 방식을 내 맘대로 조종하는 옵션들입니다.

 
옵션 이름 기능 요약 사용 예시 및 설명
skipna 결측치(빈칸) 무시 여부 skipna=True(기본값): 빈칸 빼고 계산

skipna=False: 빈칸 포함 (결과가 NaN이 될 수 있음)
 

axis 계산 방향 (가로/세로) axis=0(기본값): 위아래 열(컬럼)별로 계산

axis=1: 좌우 행별로 계산
 

numeric_only 숫자 데이터만 계산할지 여부 numeric_only=True: 에러 방지를 위해 숫자 컬럼만 골라서 계산

numeric_only=False(기본값)
 


📊 2단계: 주요 기술 통계 함수 모음

데이터프레임(df)이나 시리즈(df['컬럼명']) 뒤에 붙여서 사용하는 함수들입니다.

 

1. 대푯값 (데이터의 중심)

  • sum(): 합계
  • mean(): 평균
  • median(): 중위수 (크기순으로 세웠을 때 정가운데 값)
  • mode(): 최빈값 (가장 자주 등장하는 값)

2. 데이터의 흩어짐 (분포)

  • var(): 분산 (평균에서 얼마나 떨어져 있는지)
  • std(): 표준편차 (분산의 제곱근, 실제 데이터 오차 범위)
  • quantile(): 분위수 (상위 25%, 50% 등 자르는 기준점)

3. 가장 큰 값 & 작은 값

  • max(): 최대값
  • min(): 최소값
  • idxmax(): 최대값이 위치한 인덱스(이름표)
  • idxmin(): 최소값이 위치한 인덱스(이름표)

4. 데이터 개수 세기

  • count(): 결측치(빈칸)를 제외한 진짜 데이터 원소 개수
  • unique(): 중복을 제거한 고유값 종류 (Series에만 사용 가능)
  • nunique(): 중복을 제거한 고유값의 총 개수

🚀 실전 조합 예시 (복붙용)

Python
 
# 1. 숫자 데이터만 골라서, 빈칸 무시하고 열별 평균 구하기
df.mean(numeric_only=True, skipna=True)

# 2. 행별로 총 합계 구하기 (빈칸이 있으면 결과도 NaN)
df.sum(axis=1, skipna=False)

# 3. '연봉' 컬럼의 최대값, 최소값, 평균을 한 번에 뽑아보기
df['연봉'].agg(['min', 'max', 'mean'])
반응형