Pandas 자료구조: Series
2019-05-01
Series
Series는 일련의 객체를 담을 수 있는 1차원 배열 같은 자료구조로 색인(index)이라는 배열의 데이터와 연관된 이름을 가지고 있음.
import pandas as pd
obj = pd.Series([4, 7, -5, 3])
obj
0 4
1 7
2 -5
3 3
dtype: int64
왼쪽에 색인을 보여주고, 오른쪽에 해당 색인의 값을 보여주며, 데이터의 색인을 지정하지 않을 경우 정수 0에서 N-1(데이터의 길이)까지의 숫자가 표시
obj.values
array([ 4, 7, -5, 3])
obj.index
RangeIndex(start=0, stop=4, step=1)
각각의 데이터를 지칭하는 색인을 지정하여 Series 객체 생성 시
obj2 = pd.Series([4, 7, -5, 3], index = ['d', 'b', 'a', 'c'])
obj2
d 4
b 7
a -5
c 3
dtype: int64
obj2.index
Index(['d', 'b', 'a', 'c'], dtype='object')
Numpy 배열과 비교 시, 단일 값을 선택하거나 여러 값을 선택할 때 색인으로 라벨을 사용할 수 있음
obj2['a']
-5
obj2['d']
4
obj2[['c', 'a', 'd']]
c 3
a -5
d 4
dtype: int64
불리언 배열을 사용해서 값을 필터링, 산술 곱셈, 수학 함수를 적용하는 등 Numpy 배열 연산을 수행해도 색인-값 연결이 유지
obj2[obj2 > 0]
d 4
b 7
c 3
dtype: int64
obj2 * 2
d 8
b 14
a -10
c 6
dtype: int64
'b' in obj2
True
Series 객체 생성: 사전형 데이터(Dictionary)
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
obj3
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
이 경우 Series 객체의 색인에는 사전의 키값이 순서대로 입력되며 색인을 직접 지정하고 싶다면 아래와 같이 원하는 순서대로 색인을 넘겨줄 수 있음
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index = states)
obj4
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
이 경우 ‘California’에 대한 값은 찾을 수 없기 때문에 NaN(Not a number)으로 표기
Pandas에서 누락된 데이터 확인: isnull(), notnull()
pd.isnull(obj4)
California True
Ohio False
Oregon False
Texas False
dtype: bool
pd.notnull(obj4)
California False
Ohio True
Oregon True
Texas True
dtype: bool
obj4.isnull()
California True
Ohio False
Oregon False
Texas False
dtype: bool
Series는 산술 연산 시 색인과 라벨을 자동 정렬함
obj3 + obj4
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64
Series 색인의 name 속성
obj4.name = 'population'
obj.index.name = 'state'
obj4
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
Name: population, dtype: float64
Series의 색인은 대입하여 변경 가능
obj
state
0 4
1 7
2 -5
3 3
dtype: int64
obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
obj
Bob 4
Steve 7
Jeff -5
Ryan 3
dtype: int64