/* 본 게시물은 ' 파이썬 라이브러리를 활용한 데이터 분석 2판 | with 웨스 맥키니 ' 의 내용과 참고자료를 토대로 작성되었습니다. */
/* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */
Pandas 자료구조 - Series
pandas의 대표적인 자료구조인 Series, DataFrame 에 대해 알아보자. 이 두 가지 자료구조를 배우면 대부분의 애플리케이션에서 사용하기 쉬우며 탄탄한 기반이 되어줄 것이다.
Series
Series는 일련의 객체를 담을 수 있는 1차원 배열 같은 자료구조이다. 그리고 색인(index) 이라고 하는 배열의 데이터와 연관된 이름을 가지고 있다. ( 파이썬의 Dictionary형과 비슷하다)
Series 객체 생성하기
# index(색인) 와 data 로 이루어짐.
obj = pd.Series([2,10,-1,2])
print(obj)
"""
0 2
1 10
2 -1
3 2
dtype: int64
"""
data 앞에 있는 0~3 을 index(색인) 이고 2 10 -1 2 는 values 이다. 색인의 default 값은 0 ~ N-1 숫자이다. 색인에 자신이 원하는 값으로 설정할 수 있다.
Series.values / index
print(obj.values) # [ 2 10 -1 2]
print(obj.index) # RangeIndex(start=0, stop=4, step=1)
Series 의 배열과 색인 객체는 각각 values 와 index 속성을 통해 얻을 수 있다.
Series.index 값 설정 및 변경하기
index 값을 설정할 때는 다음과 같이 하면 된다.
obj2 = pd.Series([4, 7, -5, 3], index=['a', 'b', 'a', 'c'])
print(obj2)
"""
a 4
b 7
a -5
c 3
dtype: int64
"""
# index 값 변경
obj2.index = ['e', 'f', 'g', 'h']
print(obj2)
"""
e 4
f 7
g -5
h 3
dtype: int64
"""
* 색인 값이 중복되도 상관없다.
Series 색인
색인 값을 라벨로 사용한 색인
print(obj2['a']) # index 가 a 인 값 모두 출력
"""
a 4
a -5
dtype: int64
"""
print(obj2[['c', 'a', 'b']]) # c, a, b 순서로 출력
"""
c 3
a 4
a -5
b 7
dtype: int64
"""
print('b' in obj2) # True
print(4 in obj2) # False -> 색인으로 검색
* in 키워드 : 색인 (Not values) 중 찾는 값이 있으면 True , 없으면 False
불리언 배열을 사용한 색인
print(obj2 > 0)
"""
a True
b True
a False
c True
"""
print(obj2[obj2 > 0])
"""
a 4
b 7
c 3
"""
print(obj2 * 2)
"""
a 8
b 14
a -10
c 6
"""
* 산술 곱셈이나 수학 함수 등 연산을 해도 색인-값 연결이 유지된다.
파이썬 사전형 -> Series 객체
dictData = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
obj3 = pd.Series(dictData)
"""
a 1
b 2
c 3
d 4
dtype: int64
"""
색인 검색
alphabet = ['a', 'b', 'c', 'e']
# 색인 검색
obj4 = pd.Series(dictData, index = alphabet)
print(obj4)
"""
a 1.0
b 2.0
c 3.0
e NaN
dtype: float64
"""
* 'e' 색인은 없으므로 NaN(누락된 값) 으로 표시
누락된 데이터 찾기
# null -> True / not null -> False
print(pd.isnull(obj4))
"""
a False
b False
c False
e True
dtype: bool
"""
# null -> False / not null -> True
print(pd.notnull(obj4))
"""
a True
b True
c True
e False
dtype: bool
"""
values / index 에 이름 달기
# data 이름
obj4.name = 'num'
# index 이름
obj4.index.name = 'alphabet'
print(obj4)
"""
alphabet
a 1.0
b 2.0
c 3.0
e NaN
Name: num, dtype: float64
"""
참고 자료
[URL] :