본문 바로가기
Python Basics

Library for Statistics Analysis (1)

by Nowkeeh Ahc

 파이썬을 이용하여 데이터 분석을 할 때는 주로 라이브러리를 활용한다. 파이썬 라이브러리를 이용하면 분석 시 매번 코드를 작성해야 하는 번거로움을 덜 수 있으며, 초보자도 사용법만 익히면 쉽게 분석작업을 할 수 있다.                           

 

1) 라이브러리의 개념

 파이썬에서 라이브러리 (Library)는 여러 모듈 (Module)을 체계적으로 모아 저장해 놓은 코드 묶음을 의미하며, 패키지 (Package)라고 부르기도 한다. 여기서 모듈은 파이썬 코드가 작성된 ‘.py’ 파일을 말한다. 파이선 코드를 작성한 후 파일로 저장하면 다른 코드에서도 이 파일을 불러오기 (Import)하여 해당 모듈의 변수, 함수, 클래스를 이용할 수 있다. 

 파이썬 라이브러리는 폴더 (Directory)구조로 되어 있어 파이썬 모듈을 계층적으로 관리할 수 있다. 라이브러리의 구조를 간단하게 표현하면 다음과 같다.

Library/
	__init__.py

	Sub_ Library _1/
		__init__.py
		Sub_1_module1.py
		Sub_2_modeule2.py

	Sub_Library _2/
		__init__.py
		Sub2_module1.py
		Sub2_module2.py

 상단에 있는 ‘Library’는 라이브러리 이름이고, ‘.py’ 파일은 파이썬 모듈이다. 라이브러리는 모듈뿐만 아니라 또 다른 서브 라이브러리도 가질 수 있다.

 라이브러리의 각 폴더에 있는 ‘__init__.py’ 파일은 해당 폴더가 라이브러리의 일부인 것을 알려주는 역할을 한다. Python3.3 버전부터는 ‘__init__.py’ 파일이 없어도 라이브러리로 인식하지만 하위 버전 호환을 위해 ‘__init__.py’ 파일을 생성하는 것이 좋다.

 

2) 주요 파이썬 라이브러리

 파이썬에서 분석 작업을 위해 사용하는 대표적인 라이브러리로는 NumPy, Pandas, SciPy, Scikit-Learn, Matplotlib 등이 있다. 각 라이브러리들은 분석 목적에 따라 매우 다양한 함수들을 포함하고 있기 때문에 한 번에 미리 공부하는 것은 무리가 있으며, 필요에 따라 새로운 함수 사용법을 익혀가며 학습하는 것이 바람직하다. 또한, 특정 분석 기능을 제공하는 함수 기능들이 종종 다른 라이브러리의 함수를 통해서도 제공되는 경우가 있기 때문에 동일한 기능이라도 사용자에 따라 다른 라이브러리를 통해 구현될 수 있다. 본 절에서는 상기 기술한 파이썬의 주요 라이브러리의 개념을 먼저 살펴보고, 파이썬 데이터 분석의 기본 라이브러리인 Numpy와 Pandas 라이브러리에 대해 조금 더 자세히 살펴보도록 한다. 


NumPy

 NumPy는 Numerical Python의 줄임말로서 수학/과학 연산 작업을 위한 라이브러리로 수치 해석, 통계 관련 기능을 구현할 때 가장 기본적으로 사용되는 라이브러리다. 주로 배열 (Array)이라는 객체를 생성해서 색인, 처리, 연산 등을 하는 기능을 수행하며, NumPy 자체가 C나 포트란 (Fortran)으로 작성되어 실행 속도가 매우 빠른 편이다. 따라서, C나 포트란으로 이루어진 라이브러리는 NumPy 배열 데이터를 따로 복사하지 않고 사용할 수 있다. NumPy는 주로 기본적인 분석이나 데이터 처리를 위해 사용하기 때문에 Pandas, Matplotlib, Scipy, Scikit-Learn 등의 다른 분석용 라이브러리와 함께 쓰이는 경우가 많다. NumPy 라이브러리에 대한 자세한 설명은 다음의 URL을 참고하기 바란다. 

* https://www.numpy.org/


Pandas

 Pandas는 구조화된 데이터를 빠르고 쉽게 다양한 형식으로 가공할 수 있는 자료 구조와 함수를 제공하여 데이터를 재배치하거나 집계, 부분집합 등을 자유롭게 처리할 수 있는 라이브러리이다. 또한, Pandas는 NumPy의 배열 계산 기능과 스프레드시트, SQL과 같은 관계형 데이터베이스의 유연한 데이터 조작 기능을 합쳐 놓은 라이브러리라고 할 수 있다. Pandas에서는 Series나 DataFrame 객체를 제공하는데, Series는 1차원 배열에 인덱스를 붙여놓은 형태이고, DataFrame은 우리가 흔히 아는 표 형태의 데이터 세트로 이해하면 된다. 머신러닝을 다루는 본서에서는 주로 DataFrame 객체를 이용해서 분석 작업을 하게 된다. Pandas 라이브러리에 대한 자세한 설명은 다음의 URL을 참고하기 바란다.

* https://pandas.pydata.org/


SciPy

 SciPy는 수학 및 과학 계산의 여러 가지 기본 문제를 다루는 라이브러리로 미분, 적분, 방정식의 근을 구하는 수학 연산을 필요로 하거나, 평균과 표준편차, 사분위수, 연속 및 이산 확률분포 계산, 인과관계 통계분석 등과 같은 다양한 통계 문제들을 처리할 수 있도록 도와준다. SciPy 역시 다른 라이브러리와 마찬가지로 NumPy, Matplotlib, Pandas 등과 연계되어서 사용할 수 있다. SciPy 라이브러리에 대한 자세한 설명은 다음의 URL을 참고하기 바란다.

* https://www.scipy.org/


Scikit-Learn

 Scikit-Learn은 구글 썸머 코드에서 2007년에 처음 구현한 머신러닝 전용 라이브러리로서 현재까지 파이썬으로 구현된 머신러닝 라이브러리 중 가장 널리 알려져 있다. 지도학습 모형, 비지도학습 모형, 모형의 선택 및 평가, 데이터 변환 등 머신러닝 분석을 위한 대부분의 기능 영역을 모두 포함하고 있으며, NumPy를 비롯한 다른 라이브러리와 호환하여 사용하기도 쉽다. 본서에서도 다양한 머신러닝을 구현할 때 Scikit-Learn 라이브러리를 주로 사용한다. Scikit-Learn 라이브러리에 대한 자세한 설명은 다음의 URL을 참고하기 바란다.

* http://scikit-learn.org/


Matplotlib

 Matplotlib는 그래프나 2차원 데이터를 시각화하기 위한 라이브러리로서 존D. 헌터가 처음 개발하여 현재에도 많은 개발팀들이 지속적으로 라이브러리의 기능을 확장하고 있다. 우리가 흔히 아는 히스토그램, 산점도, 파이차트, 막대그래프 등을 Matplotlib 라이브러리를 이용하여 간단한 코딩을 통해서 만들 수 있다. Matplotlib 라이브러리 역시 NumPy와 연동해서 사용할 수 있다. Matplotlib 라이브러리에 대한 자세한 설명은 다음의 URL을 참고하기 바란다.

* https://matplotlib.org/

 


This post was written based on what I read and studied the book below.

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791195511747

댓글