학습/데이터 분석

Pandas DataFrame 심화 정리

DataJ 2025. 5. 14. 12:51

1. 데이터셋 구조 확인

df.head()        # 상위 5개 행 출력
df.tail()        # 하위 5개 행 출력
df.shape         # (행, 열) 형태 출력 → 예: (2240, 10)
df.columns       # 열 이름 확인
df.dtypes        # 열별 데이터 타입 확인

2. 함수 적용: apply()

df['Age_category'] = df['Age'].apply(lambda x: 'young' if x < 30 else 'adult')

Age Age_category

25 young
45 adult

3. 값 매핑: map(), applymap()

df['Gender'] = df['Gender'].map({'M': 'Male', 'F': 'Female'})

Gender (Before) Gender (After)

M Male
F Female
df.applymap(lambda x: str(x).upper())

Name City

alice seoul
ALICE SEOUL

4. 타입 변환: astype()

df['Age'] = df['Age'].astype(int)

Age (Before) Age (After)

35.0 35

5. 값 교체: replace()

df['Education'] = df['Education'].replace({'Basic': 'Low', '2n Cycle': 'Medium'})

Education (Before) Education (After)

Basic Low
2n Cycle Medium

6. 조건식 처리: where()

df['HighIncome'] = df['Income'].where(df['Income'] > 50000, other='Low')

Income HighIncome

60000 60000
40000 Low

7. 여러 집계함수 동시 적용: agg()

df.agg({
    'Income': ['mean', 'max'],
    'Age': 'median'
})

Income Age

mean 51639.5  
max 162397  
median   45.0

8. 복제 및 비교: copy(), equals()

df_copy = df.copy()
df.equals(df_copy)    # True

구조와 값이 모두 같은지 확인 가능


9. 멀티인덱싱: MultiIndex, get_level_values(), swaplevel()

# 다중 인덱스 설정 (행 인덱스를 'Region'과 'CustomerID'로 구성)
df = df.set_index(['Region', 'CustomerID'])

# 특정 인덱스 레벨의 고유값 추출
df.index.get_level_values('Region').unique()

# 인덱스 레벨 순서 변경 (Region ↔ CustomerID)
df = df.swaplevel(0, 1)

📌 추천 사용 흐름

단계 주요 함수

탐색 info(), describe(), head()
정제 dropna(), fillna(), astype(), replace()
추가 파생 apply(), map(), insert()
정렬/필터링 sort_values(), nlargest(), where()
집계 분석 agg(), groupby()