왜 파이썬을 사용하는가?
1. 파이썬은 여러 프로그래밍 언어와 호환성이 좋다.
- 호환되는 언어 : C, C++, FORTRAN
- 최신 컴퓨팅 환경에서는 선형대수, 최적화, 통합, 고속 푸리에 변환 같은 알고리즘을 위해 C 라이브러리나 포트란의 레거시를 공유하여 사용된다.
2. 파이썬의 장단점
- 파이썬은 인터프리트 언어이므로 C++,Java 와 같은 컴파일 언어보다는 많이 느린편이다.
- 하지만, 개발자 비용이 CPU의 시간 비용보다 높기 때문에 비용이 높은 C++,Java보단 Python을 사용하여 개발비용을 줄일 수 있다.
- 파이썬은 동시다발적인 멀티스레드를 처리하기에는 적합한 언어가 아니다.(단, 다른 언어와의 확장을 통해 병렬 코드 사용 가능)
GIL(Global interpreter lock: 전역 인터프리터 잠금) 이라는 개념이 사용되어 인터프리터가 한 번에 하나의 명령만 실행이 가능하도록 한다.
3. 다양한 파이썬 라이브러리 제공
- NumPy(Numerical Python): 산술 계산을 위해 사용되는 라이브러리; 자료구조, 알고리즘 산술 데이터 등
빠르고 효율적인 다차원 배열 객체 ndarray
배열 원소를 다루거나 배열 간의 수학 계산을 수행하는 함수
디스크로부터 배열 기반의 데이터를 읽거나 쓸 수 있는 도구
선형대수 계산, 푸리에 변환, 난수 생성기
파이썬 확장과 C,C++ 코드에서 NumPy의 자료구조에 접근하고 계산 기능을 사용 할 수 있도록 해주는 C API
- Pandas: 구조화된 데이터나 표 형식의 데이터를 빠르고 쉽고 표현적으로 다루도록 설계된 고수준의 자료구조와 함수를 제공(다차원으로 구조화된 데이터를 뜻하는 경제학 용어인 Panel data와 Python data analysis에서 따온 이름이다.)
자료구조를 표 형태의 로우와 칼럼을 갖는 DataFrame(데이터프레임)과 1차원 배열 객체 Serise(시리즈) 사용
NumPy의 고성능, 배열 연산 + SQL과 같은 스프레드시트와 관계형 데이터베이스의 유연한 데이터 처리 결합
색인 기능을 제공하여 데이터 변형, 자르기, 취합, 그리고 데이터의 부분집합을 선택 가능
시계열 기능
데이터 분석 언어인 R에서 핵심 구현의 일부 또는 애드온 패키지에서 기능을 가져옴
- matplotlib: 그래프나 2차원 데이터 시각화를 생성하는 라이브러리
- IPython(Interactive Python) 과 Jupyter: 대화형(인터랙티브) 파이썬 언어 라이브러리로 일반 프로그래밍 언어의 특징인 편집-컴파일-실행 방식 대신 실행-탐색 방식을 장려하며 파일시스템과 운영체제 셸에도 쉽게 접근할 수 있다. IPython은 2014년도 부터는 Jupyter notbook으로 이름이 변경되었고, 주피터에서 파이썬을 사용할 수 있게 해주는 커널(프로그래밍 언어 모드)로 역할을 변경했다.
- SciPy: 과학 계산 컴퓨팅 영역의 여러 기본 문제를 다루는 패키지 모음이다.
scipy.integrate
- 수치적분 루틴과 미분방정식 풀이법
scipy.linalg
- numpy.linalg에서 제공하는 것보다 더 확장도니 선형대수 루틴과 매트릭스 분해
scipy.optimize
- 함수 최적화기와 방정식의 근을 구하는 알고리즘
scipy.signal
- 시그널 프로세싱 도구
scipy.sparse
- 희소 행렬과 희소 선형 시스템 풀이법
scipy.special
- 감마 함수처럼 흔히 사용되는 수학 함수를 구현한 포트란 라이브러리인 SPECFUN 래퍼
scipy.stats
- 표준 연산/이산 확률 분포(밀도 함수, 샘플러, 연속 분포 함수)와 다양한 통계 테스트 그리고 좀 더 기술적인 통계도구
- scikit-learn: 머신러닝을 위한 도구
분류: SVM, 최근접 이웃, 랜덤 포레스트, 로지스틱 회귀 등
회귀: 라소, 리지 회귀 등
클러스터링: k-평균, 스펙트럴 클러스터링 등
차원 축소: PCA, 특징 선택, 행렬 인수분해 등
모델 선택: 격자탐색, 교차검증, 행렬
전처리: 특징 추출, 정규화
- statsmodels: 다양한 R 언어용 회귀분석 모델을 기반으로 만들어진 통계분석 패키지다. scikit-learn과 비교하여 statsmodels는 전통적인 통계와 계량경제학 알고리즘을 포함한다.
회귀분석: 선형회귀, 일반화 선형 모델, 로버스트 선형 모델, 선형 혼합효과 모델 등
분산분석(ANOVA: analysis of variance)
시계열분석: AR,ARMA,ARIMA, VAR 및 기타 모델
비모수 기법: 커널밀도추정, 커널회귀
통계 모델 결과의 시각화
'Programming > Python' 카테고리의 다른 글
[Python] IPython 키보드 단축키 및 매직 명령어 (0) | 2021.01.18 |
---|---|
[Python] 파이썬의 기본 명령어 및 기능 (0) | 2021.01.18 |
[Python] 파이썬 2와 파이썬 3의 차이점 (0) | 2021.01.15 |
[Python] 몫과 나머지 - divmod(feat.프로그래머스[파이썬을 파이썬답게]) (0) | 2020.09.21 |