본문 바로가기
IT/인공지능

[Pandas] Series 기초

by uzzing' 2022. 8. 10.

Pandas

pandas 는 새로운 자료구조 Series, DataFrame 를 제공한다. 파이썬에서 기본으로 제공해주는 리스트와 딕셔너리를 사용할 수 있지만 이것들을 사용하는 것은 마치 요리를 하기 전 칼과 도마와 같은 장비들을 직접 만드는 것에 빗댈 수 있을 것 같다. 데이터를 이리저리 쉽게 다룰 수 있도록 도와주는 것이 Series 와 DataFrame 이다. 이에 대해 간단한 것들에 대해서 정리하고자 한다. 필요한 것들이 있다면 그때그때 구글링해서 찾아쓰면 되기 때문이다.

 

우선, pands를 사용하기 위해서는 아래와 같이 import 를 해줘야한다. 

import pandas as pd

이제 Series 와 DataFrame 에 대해서 알아보자.

 

Series

순서가 있는 1차원 자료구조이며 구성요소는 index, value 2가지이다.

# A, B, C, D, E

math = [90, 92, 89, 90, 91]
eng = [89, 90, 93, 91, 88]
kor = [92, 91, 92, 90, 92]

이와 같은 예시가 있을 때

1. Series 로 만들기

math_sr = pd.Series( math )
eng_sr = pd.Series( eng )

이와 같이 만들어주면 된다. 일단 이렇게 봤을 때 list 의 차이점이 무엇이길래 Series 를 사용하는 지 궁금해질 것 같다. 

우선, 처음 Series 로 만들때 index 값을 정할 수 있다. 

math_sr = pd.Series( math, index=['A', 'B', 'C', 'D', 'E'] )
eng_sr = pd.Series( eng, index=['A', 'B', 'C', 'D', 'E'] )

2. 데이터 접근

우리가 list 에서는 index 값이 0, 1, 2, ...같이 정해져 있지만, 위와 같은 방법으로 Series 로 만들면 index 를 직접 명시할 수 있게 된다. 이렇게 되면 딕셔너리에서 키값을 통해 value 를 얻는 것과 비슷한 방식으로 원소에 접근할 수 있다. 

print(math_sr['A'])
print(math_sr[0])
# 90
# 90

3. 슬라이싱

범위를 지정하여 원하는 부분만큼의 데이터를 가져올 수 있다. 이것을 슬라이싱이라고 한다. 기본적인 순서 인덱스를 통해 범위를 지정하고 가져온다고 할 때 아래와 같은 코드에서는 0번째부터 3번째 전까지 즉, 0~2에 해당하는 데이터를 가져온다. 

math_sr[0:3]
# A    90
# B    92
# C    89
# dtype: int64

앞서 설정한 index 값에 대해서 접근하여 사용할 수 있으며, -1은 리스트의 맨 끝 위치를 나타내므로 [:-1] 은 처음부터 끝까지에 해당한다.

math_sr['A':'D']	# 'A'부터 'D'까지
math_sr[:-1]		# 처음부터 끝까지

4. 함수들

4.1 정렬

정렬을 하면서 list 와 다른 점이 있다. Series 는 정렬을 하면 인덱스가 같이 움직인다는 것이다. 그렇기 때문에 기존의 인덱스 위치값을 쉽게 알 수 있다. 지금음 'A' ~ 'E' 의 인덱스를 준 것에 대해보였는데, 기본적인 숫자 인덱스의 경우도 동일하게 같이 움직인다. 

math_sr.sort_values( ascending=False )  # 인덱스와 같이 움직임

# B    92
# E    91
# A    90
# D    90
# C    89

4.2 간단한 통계값 구하기

math_sr.describe()

# count     5.000000
# mean     90.400000
# std       1.140175
# min      89.000000
# 25%      90.000000
# 50%      90.000000
# 75%      91.000000
# max      92.000000
# dtype: float64

5. 필터링

필터링은 조건을 통해서 데이터를 가져온다. [ 조건 ] : 대괄호 안에 조건을 넣는다. 조건은 True, False 의 bool 데이터 타입의 결과를 반환하여 필터링이 된다. 두번째 블럭을 보면, 해당 조건에 대해 True 인 B, E 가 첫번째 블럭에서 출력되는 것을 볼 수 있다.

math_sr[ math_sr > 90 ]

# B    92
# E    91
math_sr > 90 

# A    False
# B     True
# C    False
# D    False
# E     True
# dtype: bool

6. 시리즈의 연산

시리즈 - 시리즈 : 값을 기준으로 같은 인덱스끼리 연산을 한다.

시리즈 - 값 : 시리즈의 모든 데이터에 같은 값을 똑같이 연산해준다. 위의 math_sr > 90 을 보면 된다. 

math_sr / eng_sr

# A    1.011236
# B    1.022222
# C    0.956989
# D    0.989011
# E    1.034091

 

 

반응형

댓글