Python for data analysis

Chaper 1 시작하기 전에

표독's 2016. 3. 4. 12:20

1.1 이 책은?

파이썬으로 데이터를 다루는 다양한 기본적인 방법을 소개.


1.2 왜 데이터 분석을 위한 파이썬인가?


파이썬은 스크립트 언어라고 한다.


이름 자체에 중요한 소프트웨어를 만드는 데는 사용하지 못한다는 의미를 함축한다.


과확계산 컴퓨팅 커뮤니티에서 사용된다.


1.2.1 접착제처럼 사용하는 파이썬


C, C++, 포트란 코드와의 통합이 쉽다.


프로그램은 실행 시간의 대부분을 차지하는 작은 부분의 코드와 실행 시간을 얼마 차지하지 않는 많은 양의 '글루 코드'로 이루어져 있다.


1.2.2 한 가지 언어만 사용


파이썬은 연구를 하거나 프로토 타입을 만드는 데 적합한 언어일 분만 아니라 실제 시스템을 개발하는 데도 적합하기에 갈수록 인기를 더하고 있다.


1.2.3 파이썬을 사용하면 안 되는 경우.


파이썬은 인터프리터 언어라 Java나 C++같은 컴파일 언어보다 많이 느리다.


동시다발적인 멀티스레드를 처리하거나 CPU에 집중된 많은 스레드를 처리하는 애플리케이션에 적합한 언어는 아니다. GIL때문인데, 이 메커니즘은 인터프리터가 한 번에 하나의 파이썬 바이트 코드 명령만 실행하도록 한다.


1.3 필수 파이썬 라이브러리

지금부터 사용할 라이브러리와 과학계산용 파이썬 환경에 익숙하지 않은 독자를 위해 간단히 라이브러리를 소개한다.



1.3.1 NumPy

NumPy는 Numerical Python의 줄임말로, 과학계산용 파운데이션 패키지다.


 기능:

빠르고 효율적인 다차원 배열 객체 ndarray

배열 원소를 다루거나 배열 간의 수학 계산을 수행하는 함수

디스크로부터 배열 기반의 데이터를 읽거나 쓸 수 있는 도구

선형대수 계산, 푸이에 변환, 난수 발생기

파이썬과 C, C++그리고 포트란 코드를 통합하는 도구


파이썬에 빠른 배열 처리 기능을 제공한다. 데이터 분석에서는 아록르짐에 사용할 데이터 컨테이너의 역하을 한다. 수치 데이터라면 NumPy 배열은 파이썬 기본 자료 구조보다 훨씬 효율적인 방법으로 데이터를 저장하고 다룰 수 있다. 또한 C나 포트란 같은 저수준 언어로 이뤄진 라이브러리는 NumPy 배열에 저장된 데이터를 복사하지 않고 사용할 수 있다.


1.3.2 pandas

pandas : 구조화된 데이터를 빠르고 쉬우면서도 다양한 형식으로 가공할 수 있는 풍부한 자료 구조와 함수를 제공한다. 파이썬을 강력하고 생산적인 데이터 분석 환경으로 만드는 데 꼭 필요하다.


주로 pandas의 주요 객체인 DataFrame을 다룰 텐데, 이 객체는 2차원 표 또는 행과 열을 나타내는 자료 구조다.


NumPy의 고성능 배열 계산 기능과 스프레드 시트, SQL 같은 관계형 데이터베이스의 유연한 데이터 조작 기능을 조합한 것이다. 

세련된 인덱싱 기능으로 쉽게 데이터를 재배치하고 잘게 조각내거나 집계하고 부분집합을 구할 수도 있다. 


1.3.3 matplotlib

그래프나 2차원 데이터 시각화를 생성하는 유명한 파이썬 라이브러리.

출판물에 필요한 그래프를 만드는 데 맞춰졌으며 IPython에 통합되어 있어 편리하게 데이터를 살펴보고 그래프를 만들어 낼 수 있다.


1.3.4 IPython

IPython은 표준 과학계산용 파이썬 도구 모음에 포함된 컴포넌트이며, 인터랙티브하고 강력한 생산적인 환경을 제공한다. 파이썬 코드를 작성하고 테스트하고 디버깅을 할 수 있는 향상된 파이썬 셸을 제공한다.

특히 데이터를 처리하고 matplotlib으로 데이터를 시각화 하는 데 매우 유용하다. 

실행, 디버깅, 테스트 같은 파이썬을 필요로 하는 작업을 대부분 수행할 수 있다.


IPython을 웹브라우저와 연결할 수 있는 매스메티카 스타일의 HTML 노트북 기능

그래프를 즉시 그려보거나 여러 줄을 편집할 수 있는 기능 그리고 문법 강조 기능을 가진 Qt 프레임워크 기반의 GUI 콘솔


병렬 분산 컴퓨팅을 위한 기반 구조


1.3.5 SciPy

과학계산 컴퓨팅 영역의 여러 기본 문제를 다루는 패키지 모음이다.


scipy.integrate : 수치적분 루틴과 미분방정식 해법기

scipy.linalg: numpy.linalg에서 제공하는 것보다 더 확장된 선형대수 루틴과 매트릭스 분해

scipy.optimize : 함수 최적화기와 방정식의 근을 구하는 알고리즘

scipy.signal : 시그널 프로세싱 도구

scipy.sparse : 희소 행렬과 희소 선형 시스템 풀이법

scipy.special : 감마 함수처럼 흔히 사용되는 수학 함수를 구현한 포트란 라이브러리인 SPECFUN 확장

scipy.stats : 표준 연속/이산 확률 분포와 다양한 통계 테스트, 그리고 좀 더 기술적인 통계 도구

scipy.weave : 배열 계산을 빠르게 하기 위해 인라인 C++ 코드를 사용하는 도구


NumPy와 SciPy를 함께 사용하면 확장 애드온을 포함한 MATLAB를 완벽하게 대체 가능하다.


1.4 설치와 설정

1.4.1 윈도우

1.4.2 애플 OS X

1.4.3 리눅스 

1.4.4 파이썬 2.x와 파이썬 3.x

1.4.5 통합 개발 환경

1.5 커뮤니티와 컨퍼런스

1.6 이 책을 살펴보는 방법

1.6.1 예제코드

1.6.2 예제에 사용된 데이터


1.6.3 import 컨벤션

import numpy as np

import pandas as pd

import matplotlib..pyplot as plt


1.6.4 용어


의사 코드 :

  알고리즘이나 과정을 실제 유효한 소스 코드는 아니지만 형식을 코드처럼 표현한 것


신태틱 슈거 : 

  새로운 기능은 아니지만 기존에 비해 좀 더 편리하고 타이핑도 간편해지는 프로그래밍 문법


1.7 감사의 말