데이터 작업

과학 애플리케이션

파이썬은 주로 고성능 과학 애플리케이션에 사용된다. 작성하기 쉽고 잘 작동하기 때문에 학계와 과학 프로젝트에서 널리 사용된다. 파이썬에서 과학 컴퓨팅을 하기 위해서는 분야 특성상 성능이 중요하기 때문에 대개 연산 속도가 빠른 언어로 작성된 외부 라이브러리를 사용한다.

Ipython

IPython은 기존 파이썬 인터프리터의 강화판이다. 컬러 인터페이스 보다 상세한 오류 메시지, 인라인 모드를 지원하는데, 인라인 모드에서는 그래픽과 도표를 터미널에서 띄울 수 있다.

NumPy

NumPy는 Scipy 프로젝트의 일부지만, 별도의 라이브러로도 공개되었다. 따라서 NumPy의 기능만 필요한 경우에는 Scipy는 건너뛰고 NumPy만 설치해도 좋다. NumPy는 파이썬에서 느리게 작동하는 알고리즘 문제를 다차원 배열과 이들에 위한 함수로 말끔히 해결하였다. 따라서, 이런 알고리즘은 배열의 함수로 표현될 수 있고, NumPy는 이 알고리즘이 빠르게 돌아가도록 돕는다.

Scipy

Scipy는 NumPy를 보다 수학적 함수로 사용하는 라이브러리이다. Scipy는 NumPy 배열을 기본 자료구조로 사용하며, 선형대수, 미적분, 특수 함수와 상수, 신호 처리와 같이 과학 프로그래밍에서 널리 이뤄지는 다양한 작업을 모듈로 담았다.

Matplotlob

Matplotlob은 대화형 2차원 혹은 3차원 플롯을 만들 수 있도록 돕는 융통성 있는 시각화 라이브러리이다. 만들어진 플롯은 고해상도의 그림으로 저장할 수 있다.

Pandas

Pandas는 NumPy를 기반으로 하는 데이터 작업 라이브러리이며, 데이터 접근, 인덱싱, 병합, 그룹화 작업이 수월해지도록 돕는 여러 유용한 함수를 제공한다.

Scikit-Learn

Scikit-Learn은 차원 축고, 결측치 대치, 회귀와 분류 모델, 나무모델, 군집화, 모델 파라미터 자동 튜닝, 시각화와 같은 기능을 제공하는 기계학습 라이브러리이다.

Rpy2

Rpy2는 R 통계 패키지의 파이썬 바인딩 버전이며, R 함수를 파이썬에서 실행할 수 있게 돕는다.

decimal, fractions, numbers

파이썬은 추상 베이스 클래스의 프레임워크를 정의하여, 모든 수치 자료형의 뿌리인 Number에서 Integral, Rational, Real, Complex 까지 만들었다. numbers 라이브러리 문서의 지침에 따라 다른 수치 자료형을 만들어볼 수도 있다.

SymPy

SymPy는 파이썬에서의 기호 수학을 위한 유일한 라이브러리이다. 전부 파이썬으로 작성되었으며, 속도, 시각화, 대화형 세션을 위한 선택 확장이 포함되어 있다.

텍스트 작업과 텍스트 마이닝

nltk

National Language ToolKit는 텍스트 분석을 위한 파이썬 도구이다. 스티븐 버드와 에드워드 로페가 2001년에 펜실베니아 대학의 자연어 처리 과정에서 학생들을 돕기 위해 발표한 패키지로, 여러 언어를 다루는 광범위한 라이브러리로 성장하였으며 최근에 연구된 알고리즘도 포함하고 있다.

SyntaxNet

Tensorflow를 기반으로 구축된 구글의 SyntaxNet은 미리 학습된 영어 파서(parser)를 제공한다. 다른 파서를 학습할 수 있는 프레임워크도 제공하는데, 만약 레이블이 달린 데이터가 있다면 영어 이외의 데이터에 대해서도 적용할 수 있다.

이미지 작업

파이썬에서 가장 유명한 이미지 프로세싱 및 조작 라이브러리 세 가지는 Pillow, cv2 그리고 최신 라이브러리인 Sckit-Image이다. Pillow는 형식변환과 단순 이미지 프로세싱에 좋은 파이썬 이미징 라이브러리이다. cv2는 오픈 소스 컴퓨터 비전의 파이썬 바인딩으로, 실시간 얼굴 탐지와 기타 고급 알고리즘을 제공한다. Sckit-Image는 단순 이미지 프로세싱부터 얼룩(blob), 모양, 엣지 감지와 같은 기초 요소를 제공한다.

Pillow

PIL는 이미지 조작을 위한 파이썬 핵심 라이브러리 중 하나이다. 2009년에 마지막으로 배포되었으며, 파이썬 3로 포팅되지 않았다.

cv2

오픈소스 컴퓨터 비전은 OpenCV란 이름으로 널리 알려져 있으며, PIL과 비교하여 고급 기법의 이미지 조작/프로세싱 기능이 포함된 소프트웨어다. C와 C++로 작성되었으며, 실시간 컴퓨터 비전에 중점을 두고 있다. 예를 들어, 실시간 얼굴 탐지 모델, 얼굴 인식 모델, 사람 탐지 모델 등이 있다.

Scikit-Image

위의 두가지 라이브러리보다 최신 라이브러리인 Sckit-Image는 파이썬 기반인 점과 훌륭한 문서 덕분에 꾸준히 인기가 증가하고 있다. cv2처럼 완전한 알고리즘을 가지고 있지는 않으나, 얼룩감지(blob detection), 피처 감지(feature detection)에 더하여 필터링이나 대비 조정(contrast adjustment)과 같은 표준 이미지 프로세싱 도구를 포함하고 있어 과학자에게 충분히 유용하다.