[파이썬데이터분석] 개요

imacusirius·2021년 11월 5일
0

파이썬데이터분석

목록 보기
2/12

1.1 이 책에서 다루는 내용

  • 파이썬으로 데이터를 다루는 다양하고 기본적인 방법
  • 파이썬 프로그래밍 언어의 일부, 데이터 분석 효율적으로 해결하는 데 도움되는 라이브러리
  • '데이터 분석' 방법론보다 파이썬 프로그래밍, 라이브러리, 사용 도구에 초점

1.1.1 사용하는 데이터

  • 데이터란? 구조화된 데이터
    • 각 컬럼의 형식이 문자열, 숫자, 날짜 등으로 서로 다른 표 혹은 스프레드시트와 비슷한 데이터. 관계형 데이터베이스 혹은 탭이나 쉼표로 구분되는 텍스트 파일 형식으로 저장되는 대부분의 데이터들 포함
    • 다차원 배열 (행렬)
    • SQL에서 기본키, 왜래키 등 키 컬럼에 의해 서로 연관되는 여러 가지 표
    • 일정하거나 일정하지 않은 간격의 시계열

데이터는 모델링이나 분석을 위해 좀 더 쉬운 구조로 형태를 바꿀 수 있고,
데이터 안에서 어떤 특성을 추출해 구조화된 형태로 만들 수 있음

1.2 데이터 분석에 파이썬을 사용하는 이유

  • 파이썬은 스크립트 언어로, 작은 프로그램이나 업무 자동화 스크립트를 빠르고 간단하게 만들 수 있음

  • 데이터 분석, 대화형 컴퓨팅, 데이터 시각화에서 자주 사용되는 R, 매트랩, SAS, Stata 같은 오픈소스나 상용 언어, 도구와 비교해도 뒤지지 않음

  • 최근에는 pandas, scikit-learn 같은 파이썬 라이브러리 지원이 개선돼 데이터 업무 처리에 두각을 나타냄

파이썬은 데이터 애플리케이션 개발을 위한 최고의 언어
→ 범용적인 프로그래밍 언어일 뿐만 아니라 과학 계산용으로도 손색 X

1.2.1 접착체처럼 쓰는 파이썬

  • 파이썬은 C, C++, 포트란 코드와 통합이 쉬움
    • 대부분의 최신 컴퓨팅 환경에서는 선형대수, 최적화, 통합, 고속 푸리에 변환 등의 알고리즘을 위하여 C 라이브러리, 포트란 레거시를 공유함
  • 프로그램 = 실행 시간의 대부분을 차지하는 작은 부분의 코드 + 실행 시간을 얼마 차지하지 않는 많은 양의 '글루코드'
    • 비중이 낮은 글루코드를 C언어 같은 저수준 언어로 옮겨 쓴다면 연산 병목을 최적화하여 유익한 결과를 얻을 수 있음

1.2.2 한 가지 언어만 사용

  • 대부분의 기관: R이나 SAS처럼 특화된 언어로 새로운 아이디어를 검증하고 프로토타입을 만들어 연구한 후, 그 아이디어를 자바, C#, C++ 같은 언어를 통해 상용 프로그램으로 포팅

파이썬을 사용하면 하나의 언어로 연구, 프로토타입 제작, 실제 시스템 개발할 수 있다

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

  • 파이썬은 인터프리터 언어이므로 컴파일 언어(자바, C++ 등)보다 느림
  • 동시다발적인 멀티스레드를 처리하거나 CPU에 집중된 많은 스레드를 처리하는 애플리케이션에 적합하지 X
    • GIL(Global Interpreter Lock) 때문임
    • 인터프리터가 한 번에 하나의 파이썬 명령만 실행하도록 하는 매커니즘
    • 빅데이터 처리 애플리케이션에서는 단일 클러스트가 적절한 시간 안에 데이터를 처리해야 하므로 단일 프로세스, 멀티스레드 시스템을 선호하는 경우도 있음

파이썬도 네이티브 수준(C, C++)에서 멀티스레드를 활용하는 파이썬 C 확장을 통해 GIL에 구애받지 않고 병렬 코드를 실행할 수 있다.

1.3 필수 파이썬 라이브러리

1.3.1 NumPy (Numeric Python)

  • 파이썬 산술 계산의 주춧돌 같은 라이브러리
  • 자료구조, 알고리즘 산술 데이터를 다루는 대부분의 과학 계산 애플리케이션에서 필요한 라이브러리 제공

Numpy가 제공하는 기능

  • 빠르고 효율적인 다차원 배열 객체 ndarray
  • 배열 원소를 다루거나 배열 간의 수학 계산을 수행하는 함수
  • 디스크로부터 배열 기반의 데이터를 읽거나 쓸 수 있는 도구
  • 선형대수 계산, 푸리에 변환, 난수 생성기
  • 파이썬 확장과 C, C++ 코드에서 NumPy의 자료구조에 접근하고 계산 기능을 사용할 수 있도록 해 주는 C API

NumPy는 데이터 분석 알고리즘에 사용할 데이터 컨테이너 역할 수행한다. 수치 데이터라면 NumPy 배열을 활용하는 것이 내장 자료구조보다 훨씬 효율적으로 데이터를 저장하고 다룰 수 있다. 저수준 언어로 작성한 라이브러리는 NumPy 배열에 저장된 데이터를 복사하지 않고 바로 사용할 수도 있다.

파이썬을 위한 다양한 산술 계산 도구는 NumPy 배열을 기본 자료구조로 가정하고 있거나 NumPy와 쉽게 연동할 수 있는 기능을 제공한다.

1.3.2 pandas

  • 구조화된 데이터나 표 형식의 데이터를 빠르고 쉽고 표현적으로 다루도록 설계된 고수준의 자료구조와 함수를 제공
  • 파이썬으로 생산적이고 강력한 데이터 분석 환경을 구성하는 데 도움을 줌

  • pandas의 주된 자료구조
    • 표 형태의 로우와 컬럼 이름을 가지는 DataFrame(데이터 프레임)
    • 1차원 배열 객체인 Series(시리즈)

pandas는 NumPy의 고성능, 배열 연산 아이디어에 스프레드시트와 관계형 데이터베이스의 유연한 데이터 처리 기능을 결합한 것이다.

  • 새련된 색인 기능 제공 → 데이터 변형, 자르기, 취합, 부분집합 선택

pandas 라이브러리 개발 배경

다음과 같은 요구사항을 만족하는 도구가 필요했음

  • 자동적으로 혹은 명시적으로 축의 이름에 따라 데이터를 정렬하는 자료구조
    • 잘못 정렬된 데이터에 의한 일반적인 오류 예방, 다양한 소스에서 가져온 다양한 방식으로 색인된 데이터를 다룰 수 있음
  • 통합된 시계열 기능
  • 시계열 데이터와 비시계열 데이터를 함께 다룰 수 있는 통합 자료구조
  • 메타데이터를 보존하는 산술 연산과 축약 연산
  • 누락된 데이터를 유연하게 처리할 수 있는 기능
  • 일반 데이터베이스처럼 데이터를 합치고 관계 연산을 수행하는 기능

pandas는 금융 문제와 사업 분석 문제를 해결할 목적으로 개발되었다. 따라서 사업 진행에 따라 생성된 데이터를 다룰 수 있는 시계열 기능과 도구가 핵심 특성이 되었다.

1.3.3 matplotlib

  • 그래프나 2차원 데이터 시각화를 생성하는 라이브러리
  • 출판물에 필요한 그래프를 만드는 데 맞춰 설계
  • 기본 시각화 도구로 가장 안전한 선택

1.3.4 IPython과 Jupyter

IPython

더 나은 대화형 파이썬 인터프리터를 만들 목적으로 시작되었다. 계산이나 데이터 분석 도구로서의 기능을 제공하지는 않지만 대화형 컴퓨팅과 소프트웨어 개발 양쪽 모두에서 생산성을 극대화할 수 있도록 설계되었다. 기존의 편집-컴파일-실행 방식이 아닌 실행-탐색 방식을 장려하며, 파일시스템과 운영체제 셸에도 쉽게 접근할 수 있다.

Jupyter

언어에 상관없이 대화형 컴퓨팅 도구를 설계할 수 있게 해 주는 프로젝트로 시작되었다. IPython 시스템은 이제 주피터에서 파이썬을 사용할 수 있게 해 주는 커널 역할을 하고 있다.

IPython Shell과 Jupyter Notebook은 데이터를 탐색하고 시각화하는 데 특히 유용하다.

1.3.5 SciPy

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

  • scipy.integrate
    수치적분 루틴과

0개의 댓글