pandas 또한 python을 이용한 데이터분석에 있어 뺴먹을 수 없는 라이브러리다. 오피셜 문서에는 pandas를 다음과 같이 소개하였다.
pandas는 오픈소스이고, BSD 라이센스 라이브러리입니다. 고성능의 사용이 쉬운 데이터구조와 python 프로그래밍언어를 위한 데이터분석 도구를 제공합니다. (pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.)
그렇다면, 질문은 다음과 같다.
pandas를 쓰는 이유 3가지를 설명해 주세요.
pandas 핵심기능은 다음과 같다. — pandas 라이브러리 바이블이라 불리는 ‘Python for Data Analysis(2nd. Edition)(번역: 파이썬 라이브러리를 활용한 데이터분석)’ 책에 소개된 내용이다.
- 자동적/명시적으로 축의 이름에 따라 데이터를 정렬할 수 있는 데이터구조.
잘못 정렬된 데이터에 의한 오류를 방지하고, 다양한 방식으로 색인된 데이터를 다룰 수 있는 기능 - 통합된 시계열 기능
- 시계열 데이터와 비시계열 데이터를 함께 다룰 수 있는 통합 자료 구조
- 산술연산과 한 축의 모든 값을 더하는 등 데이터 축약연산은 축의 이름같은 메타데이터로 전달될 수 있어야 함
- 누락된 데이터를 유연하게 처리할 수 있는 기능
- SQL 같은 일반 데이터베이스처럼 데이터를 합치고 관계연산을 수행하는 기능
결국 pandas는 데이터분석에 특화 된 자료구조에 특징이 있다는 소리인데, Series와 DataFrame이라는 자료구조를 알고 가야 한다.
한편 pandas는 관레적으로 pd라고 축약하고, DataFrame 또한 너무 자주 사용하기 때문에 df 라고 축약해서 사용한다.
import pandas as pd
from pandas import DataFrame as df
pd.Series
Series는 1차원 배열과 같은 자료구조인데, NumPy 배열과 유사하게 index와 value를 갖고 있다. 하지만 pandas Series가 갖고 있는 특징은 색인(index)을 지정할 수 있다는 특징이 있다.
series = pd.Series([3, 5, 7, 9], index=['a', 'b', 'c', 'd'])
print(series)
'''
a 3
b 5
c 7
d 9
dtype: int64 '''print(series.values, series.index)
# [3 5 7 9] Index(['a', 'b', 'c', 'd'], dtype='object')print(series['c'])
# 7
DataFrame
DataFrame은 표와 같은 스트레드시트 형식의 자료구조이다! 여러 개의 칼럼(column)으로 구성되어 있는데, 각 칼럼 별로 서로 다른 종류의 자료형(숫자, 문자열, True/False)을 저장할 수 있다. — 한편 NumPy의 다차원 행렬은 모든 칼럼이 동일한 자료형을 저장할 수 있는 자료구조
내부적으로는 동일한 index 구성을 갖는 Sereis 객체를 담고 있는 파이썬 사전(python Dictionary)라고 생각할 수 있다!
dframe = df({'col_s': series,
'col_t': pd.Series([4, 5, 6, 7], index=['a', 'b', 'c', 'd'])})
print(dframe)
'''
col_s col_t
a 3 4
b 5 5
c 7 6
d 9 7 '''print("{}\n{}\n{}".format(
dframe.values, dframe.index, dframe.columns))
'''
[[3 4]
[5 5]
[7 6]
[9 7]]
Index(['a', 'b', 'c', 'd'], dtype='object')
Index(['col_s', 'col_t'], dtype='object') '''print(dframe['col_t']['a'])
# 4
정리하면!
- pandas는 데이터 분석에 필수적인 자료구조를 제공하는 라이브러리인데, 특히 pandas DataFrame은 표와 같은 스트레드시트 구조로 데이터를 다룰 수 있어 가장 직관적이다!
- pandas의 Series와 DataFrame은 동일하게 색인(index)을 기준으로 값을 저장하는 자료구조인데, 잘못 된 정렬은 사전에 방지하고 이를 기준으로 손쉽게 값에 접근할 수 있다.
- 마지막으로 가장 큰 특징은 join 등의 관계연산을 지원해, SQL을 사용하는 효과를 누릴 수 있다.
다음 이야기: scikit-learn 주요 기능