파이썬 numpy 패키지는 행렬 및 벡터 계산을 효율적으로 연산하기 위한 ndArray 자료형을 제공한다. 하지만 numpy는 익숙해지지 않으면 이해하기 어렵기도 하다.


데이터를 분석할 때 보통 행과 열로 이루어진 테이블 데이터를 많이 다루기 때문에, 벡터보다는 엑셀과 같은 테이블 자료형이 더 익숙하고 편리하다. 파이썬에는 numpy의 ndArray보다 더 친숙한 테이블 자료형을 제공해 주는 패키지가 있다. 바로 판다스(pandas라는 패키지이다. 오늘은 파이썬 판다스 패키지에서 제공하는 자료형 중의 하나인 Series에 대해서 알아보도록 하겠다.

 

파이썬 판다스 Series

 


우리에게 가장 친숙한 데이터 구조는 어떤 데이터 구조일까? 아마도 엑셀의 Sheet처럼 행과 열로 이루어진 데이터 구조가 아닐까 한다. 판다스에서는 이런 행과 열로 이루어진 데이터 구조를 데이터 프레임이라는 이름으로 제공해 준다.

 

판다스에서 제공해주는 데이터 구조는 크게 2가지이다. Series와 DataFrame인데, 위에서 이야기한 dataframe을 알아보기 전에 먼저 Series를 알아보자. Series는 numpy의 1차원 배열과 구조가 동일하다. 다만, 인덱스와 칼럼명을 가지고 있어서 numpy보다 사용이 편리하다.

 

 

그럼 Series를 어떻게 사용하는지 알아보자. 판다스 패키지를 import하고 나서는 보통 pd라는 약어로 선언한다. 매번 pandas라고 타이핑하는 것은 비효율적이기 때문이다.

 

# coding=utf-8
 
import pandas as pd
 
data=pd.Series([6,7,10,11,100])
 
data.values
 
data.index
 
data=pd.Series(data.values, index=['p','q','r','o','m'])

 

코드 실행 결과1

 


위에서 보는 것처럼 value와 인덱스로 이루어져 있고, 인덱스로 원하는 값을 지정할 수도 있다.

 

# index를 key값으로 사용이 가능하다
data['q']

data.q

# 각각의 value에 3을 더한다
data+3

# 10보다 큰 값만 찾는다
data[data>10]

# Seires에 이름을 정한다
data.name="hahaha"

# Seires의 인덱스의 이름을 정한다
data.index.name="my name"

# Seires의 인덱스를 재정의한다.
data.reindex(['p',2,3,4,5])

# index p를 삭제한다
data.drop("p")

# q부터 o까지 -9를 입력한다
data["q":"o"]=-9

# Series에 행 추가하기
temp=pd.Series(999,index=["z"])
data.append(temp)

 

코드 실행 결과2

 

 

numpy에서 사용하는 universal function도 pandas의 Series에서 사용이 가능하다. numpy를 기반으로 만들어졌기 때문이다.

 

import numpy as np

np.sqrt(data)

data.isnull()
data.notnull()

data["p"]=np.NaN
data[data.isnull()]=10

 

 

오늘은 이렇게 판다스(pandas의 Series데이터 구조에 대해서 알아보았다. 하지만 사실 필자는 칼럼이 하나인 데이터는 list형을 많이 쓰는 것 같다. Seires데이터 구조면 그냥 list로 변환해 버린다.

pandas에서 많이 쓰는 데이터 구조는 dataframe이다. 이렇게 Series를 여러 개 붙인 것을 DataFrame으로 볼 수 있다. 실제로 DataFrame에서 하나의 칼럼을 추출하면 Series타입으로 저장되는 것을 알 수 있다. 파이썬 데이터프레임에 대해서는 다음에 자세히 다뤄보도록 하겠다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기