df.shape: 데이터 크기 (행, 열)df.columns: 컬럼명 목록df.index: 인덱스 정보df.dtypes: 각 컬럼의 데이터 타입df.columns = ['새이름1', '새이름2', ...]df.rename(columns={'옛이름': '새이름'}, inplace=True)inplace : 연산의 결과를 새로운 객체로 반환하지 않고, 원본 객체(DataFrame 또는 Series)를 직접 변경(수정)하도록 지시하는 역할
inplace=True : 원본이 바로 변경, 메서드 자체는 주로 None을 반환
inplace=False : 보통 기본값, 원본 객체는 그대로 유지, 변경된 내용이 담긴 새로운 객체를 반환
pd.read_csv('파일경로/파일명.csv', encoding='utf-8', index_col=0, sep=',')pd.read_excel('파일명.xlsx', sheet_name='Sheet1')pd.read_csv(url) (예: 타이타닉 데이터셋)df.head(n): 상위 n행 (기본 5행)df.tail(n): 하위 n행 (기본 5행)df.info(): 총 행/컬럼 수, 데이터 타입, 결측치 개수, 메모리 사용량 확인df.describe(): 숫자형 데이터의 기본 통계량 확인.shape, .columns), 괄호 () 없이 사용.head(), .describe()), 괄호 () 와 함께 사용df['컬럼명'] (Series 반환)df[['컬럼1', '컬럼2']] (DataFrame 반환)df[['새순서_컬럼1', '새순서_컬럼2']]loc[라벨] (라벨 기반): df.loc[0], df.loc[0:4, ['Name', 'Age']] (끝 포함)iloc[위치] (위치 기반): df.iloc[0], df.iloc[0:5, [3, 4, 5]] (끝 미포함)df[df['컬럼명'] == '값']df[(조건1) & (조건2)] (AND는 &, OR는 |, 조건 괄호 필수)df[df['컬럼명'].isin([값1, 값2])]isin(): '이 목록 안에 포함되니?' 포함되면 True, 아니면 False를 반환결측치 아닌 데이터: df[df['컬럼명'].notna()] (또는 ~df['컬럼명'].isna())
*isna() (또는 isnull()): '결측치니?' 결측치면 True, 아니면 False를 반환
*notna() (또는 notnull()): '결측치가 아니니?' 결측치가 아니면 True, 결측치면 False를 반환
df.reset_index(): 인덱스를 초기화하고 컬럼으로 만듦df.set_index('컬럼명'): 특정 컬럼을 인덱스로 설정df['새컬럼'] = df['컬럼1'] + df['컬럼2']titanic['Family_Size'] = titanic['SibSp'] + titanic['Parch'] + 1np.where())df['새컬럼'] = np.where(조건, True일_때_값, False일_때_값)titanic['Is_Adult'] = np.where(titanic['Age'] >= 18, 'Adult', 'Child').sort_values())df.sort_values('컬럼명', ascending=False) (내림차순)df.sort_values(['컬럼1', '컬럼2'], ascending=[True, False])| 조회 및 탐색 | head(), tail(), describe(), info() |
|---|---|
| 데이터 선택 및 필터링 | loc[], iloc[], query(), filter() |
| 데이터 조작 및 변형 | append(), drop(), rename(), melt(), pivot() |
| 정렬 및 그룹화 | sort_values(), sort_index(), groupby() |
| 결합 및 병합 | concat(), merge(), join() |
| 결측치 처리 | isnull(), notnull(), fillna(), dropna() |
| 통계 및 계산 | mean(), median(), sum(), std(), corr() |
| 변형 및 재구성 | pivot(), pivot_table(), stack(), unstack() |
| 시계열 데이터 처리 | resample(), asfreq(), rolling() |
describe() 메서드mean (평균)과 50% (중간값)를 비교하여 분포의 치우침을 파악std (표준편차)로 데이터의 퍼짐 정도를 확인min (최솟값)과 max (최댓값)으로 데이터 범위를 확인percentiles 옵션으로 90%, 95% 등 상세 백분위수를 추가하여 이상치 존재를 더 정확히 파악describe(include='all') 사용 시, count (결측치 아닌 개수), unique (고유한 값 개수), top (최빈값), freq (최빈값 빈도)를 제공value_counts()를 활용한 범주형 데이터 분석normalize=True 옵션으로 각 범주의 비율 함께 확인 가능df.isnull().sum(): 컬럼별 결측치 개수를 확인(df.isnull().sum() / len(df) * 100).round(2): 컬럼별 결측치 비율을 계산하여 중요도를 파악dropna())df.dropna(): 하나라도 결측치가 있는 행을 모두 삭제df.dropna(axis=1): 결측치가 있는 컬럼을 삭제df.dropna(subset=['컬럼명']) (예: Age)fillna())Age): df['컬럼'].fillna(df['컬럼'].mean()) 또는 .median()Embarked): df['컬럼'].fillna(df['컬럼'].mode()[0]). (mode()는 Series를 반환하므로 첫 번째 값 [0]을 선택)ffill): df.fillna(method='ffill') - 이전 행의 값으로 채움 (시계열 데이터에 적합)interpolate()): df.interpolate() - 앞뒤 값의 평균으로 채움 )연속적인 변화가 예상되는 데이터에 적합, 급격한 변화 피할 수 있음)