본문 바로가기
Python/Pandas

pandas의 개요 - pandas(1)

by 콩돌 2019. 6. 7.
반응형

파이썬 버전 3.7 기준

pandas 버전 0.24.2 기준



 pandas의 개요


이 포스팅에서는 pandas의 개요에 대해 다룬다.



 pandas의 개요


pandas는 데이터 파이썬 데이터 패키지 중 하나이며, 빠르고, 유연하며 데이터의 구조를 잘 보여준다. 

또한 pandas를 사용한다면 상관관계가 있거나 라벨링된 데이터를 매우 쉽고 직관적으로 다룰 수 있다.

pandas는 파이썬에서 실용적이고 실제적인 데이터 분석을 수행하기 위한 핵심적인 고수준 구조블록(fundamental high-level building block)을 목표로 한다. 

추가적으로 pandas는 어떤 언어에서도 이용가능한 가장 강력하고 유연한 오픈소스 데이터분석 및 조작 도구가 되는 것을 목표로 한다.



 pandas로 처리할 수 있는 데이터 종류

pandas는 많고 다른 종류의 데이터를 다루는데 적합하다.

  ○ SQL table 혹은 Excel 스프레트시트와 같은 열이 균일하지 않은 종류의 테이블 데이터 

  ○ 정렬되거나 정렬되지 않은 시계열 데이터 (반드시 고정 주파수일 필요는 없음)

  ○ 행 및 열 라벨(label)이 포함 된 임의의 행렬 데이터 (균질 유형 또는 이종 유형)

  ○ 다른 형태의 관찰/통계 데이터 세트 (라벨링 되어질 필요는 없음)


 pandas의 주요 기능

pandas로 할 수 있는 몇 가지 기능을 다음과 같이 소개한다.

  ○ 부동소수점 혹은 부동소수점이 아닌 누락 데이터의 처리(NaN)

  ○ 크기의 가변성

    - DataFrame 그리고 높은 차원의 객체로부터 열을 삽입하거나 삭제할 수 있음

  ○ 자동적이며 명확한 데이터 정렬
    - 라벨을 사용하여 객체는 명확하게 정렬될 수도, Series로 라벨을 무시할 수도 있음

  ○ 데이터 집계 및 변환 수행

    - 데이터 세트의 분리 및 결합 연산을 통한 강력하고 유연한 그룹핑

  ○ 망가지고 인덱스가 어렵게 된 데이터의 DataFrame 객체로의 컨버팅

  ○ 지능형 레이블 기반 슬라이싱, 복잡한 인덱싱 및 대용량 데이터 세트의 하위 집합

  ○ 직관적인 결합 및 병합 데이터 세트

  ○ 데이터 세트의 유연한 형상 조작 및 피버팅(pivoting) 

  ○ 축의 계층 라벨링

    - 하나의 틱당 여러 개의 라벨을 붙이는 것이 가능함

  ○ 다양한 파일의 포맷으로 부터의 입출력 기능(강력한 IO 툴)

    - 플랫 파일(CSV), 엑셀파일, 데이터베이스, HDF5 포맷 등

  ○ 시계열 관련 기능:

    - 날짜 범위 생성 및 주파수 변환, moving window 통계, moving window 선형 회귀, 날짜 이동 및 지연 등.


다른 언어나 과학 연구환경에서 사용하는 도중 자주 겪게되는 결점을 다루기 위해 위와 같은 기능들이 존재한다. 

데이터 과학자들을 위해 데이터를 다루는 것은 전형적으로 아래와 같은 몇 가지 단계로 나뉜다. 

  ○ 데이터 마이닝 및 정리

  ○ 분석 및 모델링

  ○ 시각화을 위한 데이터의 정리 

    - 플로팅(plotting) 혹은 테이블로 출력을 하기 위함


 pandas의 특징

pandas의 특징으로는 다음과 같이 소개되어 있다.

  ○ pandas는 빠르다. 

    - 많은 저수준 알고리즘 비트가 Cython 코드로 광범위하게 조정되어 있다. 

    - 그러나, 다양한 분야에서 쓸 수 있도록 되어있기 때문에 pandas의 성능이 다소 떨어진다. 

    - 그래서 만약 사용자가 원하는 하나의 기능에 초점을 맞춘다면, 사용자는 더 빠르고 전문화된 툴을 만들 수 있다. 

  ○ pandas는 statsmodels(파이썬 패키지 중 하나)에 종속되어 있다.

    - 이것은 파이썬의 통계 컴퓨팅 에코시스템(statistical computing ecosystem)의 중요한 파트로 만들어 주었다.

  ○ pandas는 금융 어플리케이션의 개발에 광범위하게 사용되었다. 



 pandas의 import

pandas 패키지는 주로 다음과 같은 형식으로 불러올 수 있다.

  ○ 불러오는 방식은 사용자가 정할 수 있지만 관용적으로 아래와 같이 불러오게 된다.

  ○ pandas를 불러오지만 pandas 패키지에 기능은 pd라는 별명을 사용해서 사용하겠다는 의미이다.

  ○ 본 포스팅에서도 이를 따라 아래 형식으로 pandas를 import 할 것이다. 


pandas의 import 형식)

import pandas as pd



 pandas의 데이터 구조와 응용분야


pandas의 주요 데이터 구조로는 2가지가 있는데, Serise(1 차원), DataFrame(2 차원)이 있다. 

이 두 데이터 구조로 재무, 통계, 사회 과학 및 다양한 엔지니어링 분야에 적용될 수 있다.

R 사용자들을 위해 DataFrame은 R의 data.frame이 제공하거나 혹은 그 이상의 기능을 제공한다. 

pandas는 NumPy를 기반으로하며 다른 많은 타사 라이브러리와 과학 컴퓨팅 환경에서 잘 통합되도록 설계되어있다.



 pandas의 주요 데이터 구조

pandas에서는 크게 2가지(사실 3가지지만 하나는 DataFrame으로 커버 가능함) 데이터 구조가 있다.

  ○ Series (1차원)

    - 1차원 균일한 데이터 타입을 가지는 배열이다.

  ○ DataFrame (2차원) 

    - 일반적인 2차원 및 크기가 변경 가능한 테이블 구조이다.

    - 하나의 DataFrame에 다양한 데이터 타입이 입력 가능하다.


 하나 이상의 데이터 구조를 가지는 이유

pandas 데이터 구조의 대해 생각할 수 있는 최고의 방법은 더 낮은 차원의 데이터를 사용하여 유연한 컨테이너(container)로 만드는 것이다. 

  ○ 예를들어 DataFrame은 Series의 컨테이너이고, Series는 스칼라(scalar)의 컨테이너이다. 

이렇게 데이터 구조를 구성하면 딕셔너리(dictionary)와 유사한 형태 안에 객체를 컨테이너에 쉽게 삽입하거나 삭제할 수 있다.


대다수의 사용자는 시계열(time series) 및 특정 단면의 데이터 세트의 일반적인 방향을 고려할 때, 공통적으로 API 함수가 적절한 기본 동작을 하길 원한다.

2 및 3차원 데이터를 저장하는 ndarray 사용할 때, 사용자에게는 사용자가 함수를 작성할 때 데이터 세트의 방향을 고려하여야 하는 부담이 주어진다. 

  ○ 데이터를 처리함에 있어 열(column)이 먼저인지 행(row)이 먼저인지에 대한 방향을 설정하는 것을 의미한다.

  ○ 여기서 각 축(axes)들은 비슷하다고 간주된다(C 혹은 Fortran 연속성이 성능에 중요한 경우는 제외).


pandas에서는 축(axes)들이 가지는 데이터 구조는 데이터에 의미를 설정하기 위함이다. 

이말은 특정한 데이터 세트의 경우 데이터의 방향을 결정짓는 방법에 옳은 방법이 있는 의미이다. 

이렇게 기본값으로 설정된 데이터의 방향은 목적은 다운스트림 함수에서 데이터 변환을 코딩하는 데 필요한 시간과 비용을 줄이는 것이다.

  ○ 예를들어, 테이블 데이터(DataFrame)에서, axis 0과 axis 1를 사용하기 보다는 인덱스(행)과 열을 생각하는 것은 더욱 직관적으로 느껴지게 한다. 

  ○ DataFrame의 열(Series)을 통해 반복하게 만들면 더욱 코드를 읽기 쉽다. 



 데이터의 변경과 복사의 특징

모든 pandas의 데이터 구조는 값(scalar)이 변할 수 있다(기존에 담겨있던 값은 변경 가능함).

하지만 데이터 구조의 사이즈가 항상 변경될 수 있는건 아니다. 

예를들어 열(Series)은 DataFrame에 삽입되어 DataFrame의 열을 수를 늘릴 수는 있으나, Series의 길이는 바뀔 수 없다.

하지만 이런 상황에서도 대다수의 메서드는 새로운 객체를 생성하고, 입력데이터를 그대로 남겨놓는다.

이는 일반적인 상황에서 불변성을 선호하기 때문이다.



 

 

 

 

 참고자료

  http://pandas.pydata.org/pandas-docs/stable/getting_started/overview.html

 

 

 

 



반응형

댓글