데이터 불러오기
import pandas as pd
df = pd.read_csv(파일명)
df = pd.read_csv(파일명, **encoding = ‘euc-kr’**)데이터 출력
| 내용 | 비고 | |
|---|---|---|
| df.head() df.tail() | 상위 5개 행 하위 5개 행 | ()안에 N → N개 행 |
| print(df.shape) | 데이터 행, 열 갯수 파악 | |
| df.columns df.columns[N] | 전체 컬럼 출력 N번째 컬럼 출력 | N : 0부터 시작 |
| df.iloc[:,N].dtype | N번째 컬럼 데이터타입 | [행, 열] : = 모든 |
| df.iloc[n-1, m-1] | m번째 컬럼의 n번째 값 | |
| df.select_dtypes(exclude=object).columns df.select_dtypes(include=object).columns | 수치형 변수 컬럼 출력 범주형 변수 컬럼 출력 | |
| df.isnull()sum() | 각 컬럼 결측치 수 파악 | |
| df.info() | 컬럼 데이터 수, 데이터 타입 확인 | |
| df.describe() | 수치형 변수 분포(기술통계값) 확인 | 평균, 최소, 최대, 표준편차, 4분위수 |
| df[’x’] df[’x’].unique() df[’x’].nunique() | x 컬럼 값 출력 x 컬럼 유일값 x 컬럼 유일값 개수 | |
| df[’x’].quantile(0.75) - df[’x’].quantile(0.25) | x 컬럼 4분위 범위 값 (IQR) | |
| astype(’데이터타입’) | 데이터타입 변형 | |
| Filtering / Sorting | ||
| df.sort_values(’x’) df.sort_values(’x’, ascending=False) | x 컬럼 값에 따라 오름차순 정렬 x 컬럼 값에 따라 내림차순 정렬 | default : 오름차순 |
| df.x.str.contains(’문자’) ~df.x.str.contains(’문자’) | x 컬럼에서 특정 ‘문자’ 포함한 값 출력 x 컬럼에서 특정 ‘문자’ 포함하지 않은 값 출력 | |
| df.drop_duplicates(’x’) | x 컬럼값 기준으로 중복값 제거 후 첫번째만 남김 | 파라미터에 keep=’last’ 추가 시, 마지막 남김 |
| df.isin(리스트명) | 리스트에 있는 값 갖는 데이터 | |
| Grouping | ||
| df.value_counts() | 고유값을 센 후, 개수 기준 내림차순 정렬 | null값 세지 X |
| dropna=False 추가 시, null값 셈 | ||
| df[’x’].agg([’max’, ‘min’]) | x 컬럼 값에 대해 aggregate function | |
| max, min, mean, var 등 대괄호로 여러 개 파라미터 가능 | ||
| df.unstack() | 계층적 indexing 없이 | |
| df.fillna(대체값) | NaN 대신 대체값 삽입 | ffill : 컬럼 기준 직전 값 |
| bfill : 컬럼 기준 이후 값 | ||
| Apply / Map | ||
| df[’Y’] = df.X.map(lambda x : 조건 dic[x]) | X컬럼 값을 조건에 따라 매핑하여 컬럼 Y에 X의 x값 —- 조건 —→ Y에 dic[x] | |
| Time | ||
| df.rolling(N) | N만큼 이동 | |
| dt.day_name() | 요일명 | dt = datetime (pandas 인식) |
| dt.weekday() | 0:월요일 ~ 6:일요일 | |
| df.set_index(’x’) | x컬럼을 index로 | inplace=True : 실제 데이터에 반영 |
| Pivot | ||
| df.pivot_table(index=’’, columns=’’, values=’’) | pivot하기 values 없이 개수 구할 때는 aggfunc=’size’ | aggfunc=’’ 파라미터로 계산값 가능 |
| Merge / Concat | ||
| pd.concat(리스트) | 리스트의 dataframe 합함 - 행 or 열 방향으로 (axis=0 | 1) |
| df.T.iloc[] | 행과 열 구조 바꿈. Transpose | |
| pd.merge(df1,df2,on=key컬럼,how=방식) | SQL의 Join과 같음 | how=’left’ : SQL의 left outer join on의 컬럼명이 다른 경우 - left_on=’df1 컬럼명’ - right_on=’df2 컬럼명’ |
| Statistics | ||
| del df[’x’] | x컬럼 삭제 | 원본데이터 삭제되니 주의 |
| Series / Dataframe | Series = Dataframe의 한 개 컬럼이 프레임 없이 있는 | |
| pd.DataFrame({”컬럼명” : [컬럼값], “컬럼명” : [컬럼값]}) | 데이터프레임 생성 | |
| df[’new컬럼명’] = [컬럼값] | 컬럼 추가 | |
| df.dtypes | 컬럼별 데이터타입 | |
| df.copy() | DF 복사 | |
| df.index = [변경할 인덱스명] | 인덱스 변경 | |
| df.to_csv(’파일명.csv’) | csv파일로 저장 <저장위치> import os os.getcwd() — directory 알려줌 os.chdir(’특정경로’) — 경로 변경 | |
| df.reset_index(drop=True) | 인덱스 재정렬 | drop=True : 본래 index 컬럼 없앰 |
| Visualization | ||
| import matplotlib.pyplot as plt import seaborn as sns | ||
| a = sns.histplot(df.x) | 히스토그램 | |
| a.set(xlabel = ‘’, ylabel = ‘’, title =””) | ||
| a = sns.jointplot(x=””, y=””, data=df) | 산점도 + 히스토그램 | |
| a = pairplot(df) | df의 연속형 변수에 대하여 모든 조합으로 산점도,히스토그램 | 오래걸림 |
| a = sns.stripplot(x=””, y=””, data=df) | 카테고리형 데이터에 대한 연속형 변수 데이터 볼 때 | hue = ”” : 색 구분인자 |
| a = sns.boxplot(x=””, y=””, data=df) | outlier 확인 | |
| a = sns.FacetGrid(df, col=”x”) | x컬럼 값에 따라 n개 그래프 생성 | |
| a.map(plt.그래프종류, “x축기준”, “y축기준”) | alpha = : 투명도(0~1) | |
| df.dropna() | 행 단위 삭제 | how=’any’ : NaN을 가진 행 |