오늘 공부한 내용:
1. 🎯 데이터 추출 핵심 (인덱서: loc, iloc)
인덱서,의미,사용 방식,특징
[],기본 인덱서,"df['col'] (열 이름), df[start:end] (행 슬라이싱, 정수/레이블 모두 가능)",열을 먼저 추출하는 것이 기본. 행 추출은 슬라이싱만 허용.
.loc[],레이블(Label) 기반,"df.loc[행 레이블, 열 레이블]",행/열 인덱스 이름(레이블) 사용. 슬라이싱 시 끝점 포함.
.iloc[],정수 위치(Integer Location) 기반,"df.iloc[행 위치, 열 위치]",행/열의 정수 위치 사용 (Numpy 인덱싱과 동일). 슬라이싱 시 끝점 미포함.
2. 📝 DataFrame 전처리 및 조작
기능,메서드,설명
열 추가,df['new_col'] = value,새로운 열을 추가 (axis=1 방향의 연산 결과 사용).
열 삭제,"df.drop(['col1'], axis=1, inplace=True)","열 삭제. axis=1 필수, inplace=True로 원본 반영."
값 기반 필터링,df[ (조건1) & (조건2) ],"Boolean Indexing으로 조건을 만족하는 행만 추출 (e.g., 타이타닉에서 age >= 60 & pclass == 1)."
정렬 (값),"df.sort_values(by='col', ascending=False)",특정 열의 값을 기준으로 정렬.
정렬 (인덱스),df.sort_index(ascending=False),행/열 인덱스를 기준으로 정렬.
인덱스 초기화,df.reset_index(inplace=True),"기존 인덱스를 일반 열로 옮기고, 새롭게 0부터 시작하는 정수 인덱스를 설정."
인덱스 설정,"df.set_index('col', inplace=True)",특정 열을 새로운 행 인덱스로 지정.
열 이름 변경,"df.rename(columns={'old':'new'}, inplace=True)",딕셔너리 형태로 열 이름을 변경.
3. 📊 데이터 그룹화 및 집계 (groupby)
목표: 데이터를 특정 기준(열)으로 **분할(Split)**하고, 각 그룹에 **함수를 적용(Apply)**하며, 결과를 **결합(Combine)**하여 통계를 산출.
기본 사용: df.groupby('기준_열')['대상_열'].집계함수()
예: tipsFrm.groupby('sex')['tip'].mean() (성별 평균 팁).
다중 통계량: df.groupby('기준_열').agg(['mean', 'var', 'std'])
여러 통계량을 한 번에 계산하여 출력.
사용자 정의 함수: .apply() 또는 .agg()와 lambda 함수를 사용하여 복잡하거나 특수한 집계 처리.
예: frm.groupby('gender')['region'].apply(lambda x: x.mode()) (성별 거주지 최빈값).
활용 (결측치 처리): 그룹별 평균을 이용해 해당 그룹의 결측값을 채우는 고급 처리.
titanicFrm.groupby('sex')['age'].apply(lambda x: x.fillna(x.mean())) (성별 평균 나이로 나이 결측값 대체).