학습/데이터 분석
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() |