import pandas as pd
import numpy as np | pandas와 numpy 임포트 |
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) | 딕셔너리로 생성 |
df = pd.DataFrame(data, columns=['A', 'B']) | 컬럼 이름으로 생성 |
s = pd.Series([1, 2, 3, 4]) | Series 생성 |
s = pd.Series([1, 2], index=['a', 'b']) | 커스텀 인덱스로 Series |
df = pd.DataFrame(np.random.randn(5, 3)) | numpy 배열로 생성 |
df = pd.read_csv('file.csv') | CSV 읽기 |
df = pd.read_csv('file.csv', sep=';', header=0) | 옵션으로 읽기 |
df = pd.read_excel('file.xlsx', sheet_name='Sheet1') | Excel 읽기 |
df = pd.read_json('file.json') | JSON 읽기 |
df = pd.read_sql('SELECT * FROM table', conn) | SQL에서 읽기 |
df = pd.read_parquet('file.parquet') | Parquet 읽기 |
df.to_csv('output.csv', index=False) | CSV 쓰기 |
df.to_excel('output.xlsx', index=False) | Excel 쓰기 |
df.to_json('output.json', orient='records') | JSON 쓰기 |
df.to_parquet('output.parquet') | Parquet 쓰기 |
df.head() | 처음 5행 |
df.tail(10) | 마지막 10행 |
df.shape | 행과 열 수 |
df.info() | DataFrame 정보 |
df.describe() | 통계 요약 |
df.dtypes | 컬럼 데이터 타입 |
df.columns | 컬럼 이름 |
df.index | 인덱스 |
df.values | 데이터를 numpy 배열로 |
df.memory_usage() | 메모리 사용량 |
df['A'] | 컬럼을 Series로 선택 |
df[['A', 'B']] | 여러 컬럼 선택 |
df.A | 점 표기법 (간단한 이름) |
df.columns.tolist() | 컬럼 이름을 리스트로 |
df[0:5] | 위치로 처음 5행 |
df.iloc[0] | 위치로 첫 번째 행 |
df.iloc[0:5] | 위치로 0-4행 |
df.iloc[[0, 2, 4]] | 위치로 특정 행 |
df.loc['row_label'] | 레이블로 행 |
df.loc['a':'c'] | 레이블 범위로 행 |
df.loc[df.A > 0] | 조건으로 행 |
df.loc[0, 'A'] | 레이블로 셀 |
df.iloc[0, 0] | 위치로 셀 |
df.at[0, 'A'] | 레이블로 빠른 스칼라 접근 |
df.iat[0, 0] | 위치로 빠른 스칼라 접근 |
df.loc[0:2, 'A':'C'] | 행과 열 슬라이스 |
df.iloc[0:2, 0:3] | 위치로 슬라이스 |
df[df.A > 0] | 조건으로 필터 |
df[(df.A > 0) & (df.B < 5)] | 여러 조건 (AND) |
df[(df.A > 0) | (df.B < 0)] | 여러 조건 (OR) |
df[~(df.A > 0)] | 조건 부정 |
df[df.A.isin([1, 2, 3])] | 리스트로 필터 |
df[df.A.str.contains('pattern')] | 문자열 포함 |
df[df.A.notna()] | 비-null 필터 |
df.query("A > 0 and B < 5") | 쿼리 문자열 |
df['C'] = df.A + df.B | 새 컬럼 추가 |
df['D'] = 0 | 상수로 컬럼 추가 |
df.insert(1, 'new_col', values) | 위치에 삽입 |
df.assign(E=df.A * 2) | 새 컬럼 할당 (복사본 반환) |
df['A'] = df.A.apply(lambda x: x * 2) | 함수 적용 |
df.A = df.A.astype(int) | 데이터 타입 변경 |
df.rename(columns={'A': 'a', 'B': 'b'}) | 컬럼 이름 변경 |
df.drop('A', axis=1) | 컬럼 삭제 |
df.drop(['A', 'B'], axis=1) | 여러 컬럼 삭제 |
df.drop(0, axis=0) | 인덱스로 행 삭제 |
df.drop([0, 1, 2]) | 여러 행 삭제 |
df.drop_duplicates() | 중복 행 삭제 |
df.drop_duplicates(subset=['A']) | 컬럼으로 중복 삭제 |
df.dropna() | NaN이 있는 행 삭제 |
df.dropna(subset=['A']) | 특정 컬럼의 NaN 삭제 |
df.isna() | NaN 확인 |
df.isna().sum() | 컬럼별 NaN 수 |
df.fillna(0) | NaN을 값으로 채우기 |
df.fillna(method='ffill') | 앞으로 채우기 |
df.fillna(method='bfill') | 뒤로 채우기 |
df.fillna(df.mean()) | 평균으로 채우기 |
df.interpolate() | 결측값 보간 |
df.replace({'old': 'new'}) | 값 대체 |
df.sort_values('A') | 컬럼으로 정렬 |
df.sort_values('A', ascending=False) | 내림차순 정렬 |
df.sort_values(['A', 'B']) | 여러 컬럼으로 정렬 |
df.sort_index() | 인덱스로 정렬 |
df.nlargest(5, 'A') | 컬럼 기준 상위 5 |
df.nsmallest(5, 'A') | 컬럼 기준 하위 5 |
df.sum() | 각 컬럼의 합 |
df.mean() | 각 컬럼의 평균 |
df.median() | 각 컬럼의 중앙값 |
df.std() | 표준편차 |
df.var() | 분산 |
df.min() | 각 컬럼의 최소 |
df.max() | 각 컬럼의 최대 |
df.count() | 비-null 값 수 |
df.nunique() | 고유 값 수 |
df.A.value_counts() | 각 값의 수 |
df.groupby('A').sum() | 그룹화 및 합계 |
df.groupby('A').mean() | 그룹화 및 평균 |
df.groupby(['A', 'B']).count() | 여러 컬럼으로 그룹화 |
df.groupby('A').agg(['sum', 'mean']) | 여러 집계 |
df.groupby('A').agg({'B': 'sum', 'C': 'mean'}) | 컬럼별 다른 집계 |
df.groupby('A').transform('mean') | 변환 (형태 유지) |
df.groupby('A').apply(lambda x: x.nlargest(2, 'B')) | 커스텀 함수 적용 |
df.groupby('A').filter(lambda x: x.B.mean() > 0) | 그룹 필터 |
df.pivot(index='A', columns='B', values='C') | 피벗 테이블 |
df.pivot_table(values='C', index='A', columns='B', aggfunc='mean') | 집계가 있는 피벗 |
pd.melt(df, id_vars=['A'], value_vars=['B', 'C']) | 언피벗 (넓은 형태에서 긴 형태로) |
df.stack() | 컬럼을 행으로 스택 |
df.unstack() | 행을 컬럼으로 언스택 |
df.T | 전치 |
pd.merge(df1, df2, on='key') | 컬럼으로 병합 |
pd.merge(df1, df2, on=['key1', 'key2']) | 여러 컬럼으로 병합 |
pd.merge(df1, df2, left_on='a', right_on='b') | 다른 컬럼 이름으로 병합 |
pd.merge(df1, df2, how='left') | 왼쪽 조인 |
pd.merge(df1, df2, how='right') | 오른쪽 조인 |
pd.merge(df1, df2, how='outer') | 외부 조인 |
pd.merge(df1, df2, how='inner') | 내부 조인 (기본) |
df1.join(df2, on='key') | 인덱스로 조인 |
pd.concat([df1, df2]) | 행 연결 |
pd.concat([df1, df2], axis=1) | 컬럼 연결 |
pd.concat([df1, df2], ignore_index=True) | 연결 후 인덱스 재설정 |
pd.concat([df1, df2], keys=['a', 'b']) | 키와 함께 연결 |
df1.append(df2) | 행 추가 (deprecated) |
df['date'] = pd.to_datetime(df['date']) | 날짜시간으로 변환 |
pd.to_datetime('2024-01-01') | 날짜 문자열 파싱 |
pd.to_datetime(df['date'], format='%Y-%m-%d') | 형식으로 파싱 |
df.date.dt.year | 연도 추출 |
df.date.dt.month | 월 추출 |
df.date.dt.day | 일 추출 |
df.date.dt.dayofweek | 요일 (0=월) |
df.date.dt.hour | 시간 추출 |
df.date.dt.strftime('%Y-%m-%d') | 문자열로 형식화 |
pd.date_range('2024-01-01', periods=10) | 날짜 범위 생성 |
pd.date_range('2024-01-01', '2024-12-31', freq='M') | 월별 날짜 범위 |
df.set_index('date').resample('M').mean() | 월별 리샘플 |
df.resample('D').sum() | 일별 리샘플 |
df.rolling(window=7).mean() | 7일 이동 평균 |
df.shift(1) | 1 기간 시프트 |
df.diff() | 이전과의 차이 |
df.pct_change() | 퍼센트 변화 |