Idealim
article thumbnail

/* 본 게시물은 ' 파이썬 라이브러리를 활용한 데이터 분석 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] :

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.