DeepLearning - pandas 주요함수
데이터프레임 핸들링
딥러닝 주요 라이브러리 묵록
- numpy, pandas, matplotlib, seaborn, tensorflow, scikit-learn, XGBoost
| Library | alias | usage | etc |
|---|---|---|---|
| pandas | pd | DataFrame handling | 엑셀 같은 느낌(재료 손질) |
| numpy | np | Numerical computation, array handling | 모델 내부 계산(요리) |
| matplotlib | plt | Data visualization | 기본 그래프(like 플레이팅) |
| seaborn | sns | Advanced data visualization | 예쁜 그래프, 통계 시각화(like 플레이팅) |
예시
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split # 모델 내 특정 함수 하나만 가져오는 방식
# pandas: 전처리, 결측치, 필터링 ...
df = pd.read_csv("data.csv")
print(df.head())
# numpy: 행렬, 벡터, 계산 ...
arr = np.array([1,2,3])
print(arr)
# matplotlib: 기본 그래프
plt.plot(x, y)
plt.show()
# seaborn: 분포 확인, 상관관계 확인 ...
sns.countplot(data=df, x='label') # Label 컬럼이 있다고 가정
plt.show() # sns가 그래프를 만들었으니, 꾸미기/출력을 plt가 해 줌 (지금까지 그린 거 출력해!)
Tabular 데이터 로딩
Tabular 데이터
: 표 형태의 데이터 즉, 현업기준으론 아래의 예가 있다.
- 금융 -> 고객 데이터
- 쇼핑 -> 구매 기록
- 병원 -> 환자 정보
pandas로 Tabular 데이터 다루기
데이터 읽기
pd.read_excel()
pd.read_json()
pd.read_csv()
pd.read_table()
데이터 다루기
df = pd.DataFrame({
'name': ['Kim', 'Lee', 'Park', 'Choi'],
'age': [25, 30, np.nan, 28],
'score': [80, 90, 75, 88],
'gender': ['F', 'M', 'M', 'F']
})
# 데이터의 앞/뒷부분 몇 줄 보기
# = 데이터 상위 n개 행을 확인해보자 (기본 5개)
# = 불러온 데이터의 형태를 파악하자.
df.head(num)
df.tail(num)
# 컬럼, 자료형, 결측치 개수 확인
# = 결측치(빈 값)가 있나?
# = age가 숫자인가, 문자형인가?
df.info()
# ★ 숫자형 데이터 요약 통계
# = 평균, 표준편차, 최솟값, 최댓값
df.describe()
# 상관관계보기
# aColumn이 커진다면 다른 Column도 커지는가, 반대로 거지는가. (-1 ~ 1)
# heatmap(?) 그릴 떄 참고
# taget과 연관된 수치 변수 찾을 때 참고
# 주의, 상관관계 != 인과관계, 꼭 원인과 결과 를 관계성으로 갖는 건 아님
df[['age', 'score']].corr()
df.corr(numeric_only =True) # 문자형 컬럼은 상관계수 계산 불가
# 행의 열, 개수 확인
# 출력값: (4, 4) -> 행과 열이 각 4개
df.shape
# column Name 확인
df.columns
# 특정 column 선택
# 다중선택도 가능: df[['name', 'score']]
df['age']
df[df['age'] >= 28]
df[df['score'] >= 80]
df[(df['age'] >= 28) & (df['scroe'] >=80)] # &, |
# 자료형별로 컬럼 선택하기
df.select_dtypes(include='number') #숫자형
df.select_dtypes(include='object') #문자형
결측치 다루기
# 결측치 여부
df.isnull()
# ★ column별 결측치 개수
df.isnull().sum()
# 결측치 채우기 FILL! N/A !
df.fillna()
df['age'] = df['age'].isnull().fillna(df['age'].mean())
df['age'] = df['age'].isnull().fillna(0)
# 결측치 제거 DROP! N/A!
df = df.dropna()
정렬, 집계, 그룹화
# 정렬
df.sort_values('score', ascending=False)
# 범위별 개수
# ex. F: 2, M:2
df['gender'].value_counts()
# 그룹별 집계
# ex. F=84.0, M=82.5
df.groupby('gender')['score'].mean()
행/열 기준 계산
df['tota'] = df['age'] + df['score']
# axis=1 : 행기준 (0: 열기준)
# 80이상은 pass, 그 외 fail
df['result'] = df.apply(
lamda x: 'pass' if x['score'] >= 80
else 'fail',
axis = 1)
df[['age', 'score']].sum(axis=0)
df[['age', 'score']].sum(axis=1)
새로운 Column 생성
# 85이상에 대해 1, 아닐 경우 0
df['high_score'] = np.where(df['score']>85, 1, 0)
중복처리
# 중복여부
df.duplicated()
# 중복제거
df.drop_duplicated()
문자열 처리
# 앞뒤 공백제거
df['name'] = df['name'].str.strip()
기타
Tensorflow 검색방법
- userguide : 목차 조회
- examples: 모델 종류 별 예제
- 함수명 + example
시험 규정
- 시험지 안에 주어진 7개 사이트 통해서 참고 가능 ctrl+C,V 가능
- 개인 정리 노트 참고 불가
- [Shift + tab]: 함수 구조 정보 파악 가능
시험 범위
- 탐색적 데이터 분석 라이브러리 설치, Tabular 데이터로딩/데이터구성확인, 상관분석과 데이터 시각화
- 데이터 전처리 데이터 결측치 처리, 라벨 인코딩/원-핫 인코딩, XY데이터분리, 데이터 정규분포화/표준화
- 머신러닝/딥러닝 모델링 Scikit-learn, TensorFlow 활용 문제 예측/분류를 위한 머신러닝/딥러닝 모델링
- 모델 성능평가 모델 성능평가 및 그래픽 출력