Pandas 요약 설명서 (Cheat Sheet)
Pandas 라이브러리 사용을 위한 상세 가이드입니다.
Pandas 설치
| 명령 | 설명 |
|---|---|
conda install pandas |
Pandas를 설치하는 가장 좋은 방법은 conda를 이용하는 것입니다 |
python3 -m pip install --upgrade pandas |
PyPI를 통해 설치 |
pip install pandas |
표준 pip 설치 |
주요 약어 및 패키지 임포트
| 약어 | 설명 |
|---|---|
df |
모든 Pandas DataFrame 객체 |
s |
모든 Pandas Series 객체 |
임포트 방법
| 명령 | 설명 |
|---|---|
import pandas as pd |
Pandas를 pd라는 별칭으로 임포트 |
import numpy as np |
Numpy를 np라는 별칭으로 임포트 |
데이터 선택
| 명령 | 설명 |
|---|---|
df[col] |
열 이름을 기반으로 열을 Series 형태로 반환 |
df[[col1, col2]] |
여러 열을 DataFrame 형태로 반환 |
s.iloc[0] |
위치를 기준으로 데이터 선택 |
s.loc['index_one'] |
인덱스를 기준으로 데이터 선택 |
df.iloc[0,:] |
첫 번째 행 반환 |
df.iloc[0,0] |
첫 번째 열의 첫 번째 요소 반환 |
데이터 정리
| 명령 | 설명 |
|---|---|
df.columns = ['a','b','c'] |
열 이름 변경 |
pd.isnull() |
DataFrame 내의 null 값을 확인하고 Boolean 배열을 반환 |
pd.notnull() |
DataFrame 내의 null이 아닌 값을 확인하고 Boolean 배열을 반환 |
df.dropna() |
null 값을 포함하는 모든 행 삭제 |
df.dropna(axis=1) |
null 값을 포함하는 모든 열 삭제 |
df.dropna(axis=1, thresh=n) |
null이 아닌 값이 n개 미만인 모든 행 삭제 |
df.fillna(x) |
DataFrame 내의 모든 null 값을 x로 대체 |
s.astype(float) |
Series 데이터 타입을 float으로 변환 |
s.replace(1, 'one') |
1과 동일한 모든 값을 ‘one’으로 대체 |
s.replace([1,3], ['one', 'three']) |
1을 ‘one’으로, 3을 ’three’로 대체 |
df.rename(columns=lambda x: x + 1) |
열 이름 일괄 변경 |
df.rename(columns={'old_name': 'new_name'}) |
특정 열 이름 선택 변경 |
df.set_index('column_one') |
인덱스 열 변경 |
df.rename(index=lambda x: x + 1) |
인덱스 일괄 변경 |
데이터 가져오기
| 명령 | 설명 |
|---|---|
pd.read_csv(filename) |
CSV 파일에서 데이터 가져오기 |
pd.read_table(filename) |
구분자로 구분된 텍스트 파일에서 데이터 가져오기 |
pd.read_excel(filename) |
Excel 파일에서 데이터 가져오기 |
pd.read_sql(query, connection_object) |
SQL 테이블/데이터베이스에서 데이터 가져오기 |
pd.read_json(json_string) |
JSON 문자열에서 데이터 가져오기 |
pd.read_html(url) |
URL, 문자열 또는 HTML 파일에서 테이블 추출 |
pd.read_clipboard() |
클립보드에서 내용을 가져와 read_table()에 전달 |
pd.DataFrame(dict) |
딕셔너리 객체에서 데이터 가져오기 (Key는 열 이름, Value는 데이터) |
데이터 내보내기
| 명령 | 설명 |
|---|---|
df.to_csv(filename) |
데이터를 CSV 파일로 내보내기 |
df.to_excel(filename) |
데이터를 Excel 파일로 내보내기 |
df.to_sql(table_name, connection_object) |
데이터를 SQL 테이블로 내보내기 |
df.to_json(filename) |
데이터를 JSON 형식의 텍스트 파일로 내보내기 |
데이터 처리: Filter, Sort 및 GroupBy
| 명령 | 설명 |
|---|---|
df[df[col] > 0.5] |
‘col’ 열의 값이 0.5보다 큰 행 선택 |
df.sort_values(col1) |
col1 열을 기준으로 데이터 정렬 (기본값 오름차순) |
df.sort_values(col2, ascending=False) |
col2 열을 기준으로 내림차순 정렬 |
df.sort_values([col1, col2], ascending=[True, False]) |
col1은 오름차순, col2는 내림차순으로 정렬 |
df.groupby(col) |
‘col’ 열을 기준으로 그룹화된 GroupBy 객체 반환 |
df.groupby([col1, col2]) |
여러 열을 기준으로 그룹화된 GroupBy 객체 반환 |
df.groupby(col1)[col2].mean() |
col1로 그룹화한 후 col2 열의 평균 반환 |
df.pivot_table(index=col1, values=[col2, col3], aggfunc=max) |
col1로 그룹화하고 col2와 col3의 최댓값을 계산하는 피벗 테이블 생성 |
df.groupby(col1).agg(np.mean) |
col1로 그룹화된 모든 열의 평균 반환 |
df.apply(np.mean) |
각 열에 np.mean 함수 적용 |
df.apply(np.max, axis=1) |
각 행에 np.max 함수 적용 |
테스트 객체 생성
| 명령 | 설명 |
|---|---|
pd.DataFrame(np.random.rand(20,5)) |
20행 5열의 난수로 구성된 DataFrame 생성 |
pd.Series(my_list) |
반복 가능한 객체 my_list로부터 Series 생성 |
df.index = pd.date_range('1900/1/30', periods=df.shape[0]) |
날짜 인덱스 추가 |
데이터 보기 및 검사
| 명령 | 설명 |
|---|---|
df.head(n) |
DataFrame의 처음 n행 보기 |
df.tail(n) |
DataFrame의 마지막 n행 보기 |
df.shape |
행과 열의 개수 확인 |
df.info() |
인덱스, 데이터 타입, 메모리 정보 확인 |
df.describe() |
수치형 열의 요약 통계 확인 |
s.value_counts(dropna=False) |
Series 객체의 고유값과 개수 확인 |
df.apply(pd.Series.value_counts) |
DataFrame의 각 열별 고유값과 개수 확인 |
데이터 병합
| 명령 | 설명 |
|---|---|
df1.append(df2) |
df2의 행을 df1의 끝에 추가 |
pd.concat([df1, df2], axis=1) |
df2의 열을 df1의 끝에 추가 |
df1.join(df2, on=col1, how='inner') |
df1과 df2의 열 사이에 SQL 스타일의 join 실행 |
데이터 통계
| 명령 | 설명 |
|---|---|
df.describe() |
수치형 열의 요약 통계 확인 |
df.mean() |
모든 열의 평균 반환 |
df.corr() |
열과 열 사이의 상관 계수 반환 |
df.count() |
각 열의 null이 아닌 값의 개수 반환 |
df.max() |
각 열의 최댓값 반환 |
df.min() |
각 열의 최솟값 반환 |
df.median() |
각 열의 중앙값 반환 |
df.std() |
각 열의 표준 편차 반환 |