Python이란?
- 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어
- 범용 언어, 오픈소스 프로젝트, 무료로 사용 가능
- 여러 프로그램에서 Python 코드의 실행을 지원하지만데이터 분석용으로 Jupyter Notebook을 많이 사용
Jupyter Notebook의 설치
- Jupyter Notebook는 Python을 포함한 직접 설치 또는 Anaconda를 활용한 설치 필요
- 직접 설치시 각종 환경 설정 및 명령어 입력의 어려움으로 초보자에게 어려울 수 있음
- Anaconda의 경우 Python, Jupyter Notebook 등 다양한 프로그램을 간편 설치 가능
- Python의 경우 3.7 버전 이상 설치를 권장
Jupyter Notebook 영역별 구분
- View 메뉴에서 각 요소 보이기/숨기기 설정 가능
코드의 실행
- Edit 모드에서 코드 입력을 한 후 실행 단축키 또는 버튼 클릭으로 코드 실행 가능
- In 뒤의 숫자는 실행 번호, Out 뒤의 숫자는 출력 번호
- print() 함수를 사용하지 않을 경우 마지막 출력만 Out 오른쪽에 표기됨
명령어 입력
- Python은 대소문자 및 띄어쓰기를 잘 지켜주어야 에러를 사전에 예방 가능
- for 반복문이나 if 조건문, 사용자 정의 함수를 작성할 때는 들여쓰기 검토 필수
- 들여쓰기시 탭(tab)과 띄어쓰기를 섞어 쓰면 안되며, 탭 사용을 권장
- 주석(comment)은 줄 앞에 #을 붙이면 되며, 코드 실행에 영향을 미치지 않음
숫자와 문자
- 숫자: 정수/실수/복소수 등 표현 가능
- 문자: 작은 따옴표 또는 큰 따옴표를 활용하여 문자 지정 및 표현 가능
list 객체
- 숫자, 문자 등 다양한 원소를 저장할 수 있는 기본 객체 (object)
- 대괄호를 사용하여 생성
- 복잡한 구조의 자료 보관 용이
함수의 개념
- 어떠한 기능을 수행하기 위한 코드의 집합
- 함수명과 소괄호 사용이 기본이며 필요에 따라 인자 (argument)에 값을 할당
- Python 자체에서 제공하는 기본 함수, 라이브러리에서 제공하는 함수, 사용자가 직접 만든 함수가 있음
- 비슷한 개념으로 메서드(method)가 있음
라이브러리의 개념
- 고급 기능을 사용하기 위한 별도의 함수 집합
- 그래프를 그리거나 통계, 머신러닝 분석을 수행하는 등 특수목적용으로 제작됨
- Anaconda를 설치하여 Python을 사용하는 경우 데이터 분석에 필요한 라이브러리가 다수 기본 설치됨
- import 뒤에 라이브러리명을 선언하여 해당 라이브러리의 모든 기능을 사용할 수 있게 준비시킴 (불러옴)
- from 또는 ‘.’를 활용하여 라이브러리의 일부 모듈 또는 함수를 불러옴
- 함수 또는 모듈명이 너무 길거나 특정 사유가 있는 경우 as를 사용하여 별칭(alias) 지정 가능
- 프로그램 또는 세션을 재부팅 한 경우 다시 라이브러리 재호출 필요
엑셀 파일 사용시 유의사항
- 엑셀 파일 확장자 .xls 와 .xlsx 모두 읽어올 수 있음
- 특정 시트(sheet)를 지정하여 읽어올 수 있음
- Pandas 라이브러리의 read_excel() 함수 사용
- 엑셀 파일로 저장할 경우 데이터 객체의.to_excel() 메서드 사용
CSV 파일 사용 방법
- 각 값이 쉼표(comma)로 구분되어 있는 파일인 .csv 확장자의 파일을 읽어올 수 있음
- Pandas 라이브러리의 read_csv() 함수 사용
- csv 파일로 저장할 경우 데이터 객체의.to_csv() 메서드 사용
데이터프레임(DataFrame)
- 표 같은 스프레드시트 형식의 2차원 자료 구조
- index, column name, value 로 이루어져 있음
- Pandas의 DataFrame() 함수, 중괄호, 콜론 등 다양한 요소를 사용하여 생성
- 각 열(column)에는 숫자, 문자 등 서로 다른 속성의 자료를 넣을 수 있음
데이터프레임 색인
- 대괄호를 사용하여 내부 원소에 접근 가능
- 보다 편리한 데이터 색인 및 필터링을 위해.iloc[] 및 .loc[] 인덱서 활용
- .iloc[] 인덱서는 내부에 정수만 사용 가능
- 대괄호 내부 쉼표를 사용하여 row와 column을 동시에 색인하려고 하는 경우 쉼표 앞에 row 관련 내용 입력
- 인덱서 사용시 모든 row를 지정할 경우 콜론을 활용
데이터프레임 필터링
- 주로 row 를 필터링 하기 때문에 주로 .loc[] 인덱서를 활용하고 쉼표 앞의 row 영역에 조건 명시
- 필터링 후 해당 내용을 별도로 저장하기 위해서 할당 연산자 '='를 사용
- 다중 조건 필터링의 경우 소괄호와 논리 연산자 사용
평균
- 일반적으로 평균은 산술 평균을 지칭하며 '데이터의 합계를 데이터의 총 개수로 나눈 값'을 의미
중앙값
- 주어진 숫자 중 가장 가운데 위치한 값
상관 분석(Correlation Analysis)의 정의
- 두 변수간에 어떤 선형적(직선적) 관계를 갖고 있는지 분석하는 방법
상관 계수(Correlation Coefficient)의 특징
- 여러 가지 상관 계수가 있으나 일반적으로 피어슨 상관계수(Pearson’s correlation coefficient)를 사용
- 두 변수가 선형관계인 경우에 사용하며 상대적인 기준임
- 값 범위는 -1에서 1사이
머신러닝의 분류
- 머신러닝은 크게 3개 분야로 나뉘어짐
- 지도학습(Supervised Learning): 종속변수 존재, 모델 성능 평가 가능
- 비지도학습(Unsupervised Learning): 종속변수 부재, 모델 성능 평가가 어려움
- 강화학습(Reinforcement Learning): 어떤 환경 안에서 정의된 에이전트가 보상을 최대로 하는 행동을 선택
용어 정리
- 종속변수: 추론(예측 또는 분류) 대상이 되는 변수
- 독립변수: 추론값을 산출하기 위해 활용하는 변수
- 모델: 어떤 현상을 설명하기 위한 수식 또는 규칙
- 파라미터(Parameter): 어떤 것을 조정하기 위한 설정값
관련 라이브러리 – sklearn
- Scikit-Learn 이 정식명칭이며 다양한 머신러닝 함수를 제공
- 모듈 내부에 내/외장 데이터가 있어 이와 함께 다양한 함수를 테스트 가능
- metrics 메서드 내부에는 다양한 평가함수가 있어 이를 활용하여 모델 성능 평가
선형 회귀(Linear Regression)
- 종속변수가 수치형 자료인 경우 우선적으로 고려하는 모형
- 보통 다중 선형 회귀(Multiple Linear Regression)을 칭하며, 독립변수가 하나인 경우는 단순 선형 회귀
- sklearn 라이브러리로 구현 가능
- LinearRegression() 함수의 fit() 메서드에 학습 데이터 할당 가능
- 모델 객체의 coef_와 intercept_ 어트리뷰트로 각각 계수와 절편 확인 가능
- 모델 객체의 predict() 메서드로 예측
비계층적 군집분석: K-means Clustering
- 주어진 데이터를 k개의 군집으로 묶는 알고리즘
- 계산에 평균을 활용하며 반복 연산을 통해 최적의 결과를 도출
- sklearn 라이브러리로 구현 가능
- KMeans() 함수의 fit() 메서드에 학습 데이터 할당 가능
- 모델 객체의 cluster_centers_ 어트리뷰트로 각 군집의 중심점(centroid) 정보 확인 가능
- 모델 객체의 labels_어트리뷰트로 각 데이터에 할당된 군집 확인 가능