DeepLearning - pandas 주요함수

데이터프레임 핸들링

딥러닝 주요 라이브러리 묵록

  • numpy, pandas, matplotlib, seaborn, tensorflow, scikit-learn, XGBoost
Libraryaliasusageetc
pandaspdDataFrame handling엑셀 같은 느낌(재료 손질)
numpynpNumerical computation, array handling모델 내부 계산(요리)
matplotlibpltData visualization기본 그래프(like 플레이팅)
seabornsnsAdvanced 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 활용 문제 예측/분류를 위한 머신러닝/딥러닝 모델링
  • 모델 성능평가 모델 성능평가 및 그래픽 출력