상세 컨텐츠

본문 제목

[Pandas] 판다스 시리즈(Series)

AI

by 래모 2023. 9. 20. 00:07

본문

본 게시물은 유튜브 파이스탁님의 파이썬 판다스 기초 강의를 들으며 작성하였습니다

 

파이썬 및 Numpy 자료구조

자료구조 특징 예제 코드
리스트 순서 o 수정 o [1,2,3]
튜플 순서 o 수정 x (1,2,3)
딕셔너리 연관된 데이터 (key:value) 쌍을 저장 {'coffee':5000, 'bread':2000}
NdArray 반복문 없이 데이터 배열에 대한 처리
선형 대수와 관련된 기능 제공
arr = np.array([1,2,3])

 

Pandas 기본 자료구조

자료구조 특징
Series Numpy를 기반으로 만들어진 1차원 데이터를 위한 자료구조
DataFrame Numpy를 기반으로 만들어진 2차원 데이터를 위한 자료구조

 

from pandas import Series, DataFrame
# Series()
# DataFrame()

from pandas as pd
# pd.Series()
# pd.DataFrame()

 

Series 객체 생성

좌측은 인덱스 번호 우측은 데이터 값

 

행 번호(공식적 용어 x 강의에서 그냥 붙인 말)와 인덱스를 사용해서 데이터를 관리

- 자동으로 부여되는 행 번호 (수정 x)

- 인덱스는 문자 혹은 숫자로 설정 가능( 설정 안 하면 0부터 시작하는 정수로 자동 할당)

 

 

 

 

Series 속성

index

- 시리즈 객체의 인덱스를 접근

- s.index

 

values

- 시리즈 객체의 값에 접근

- s.values

 

 

 

Series 인덱싱

1. iloc 사용

iloc속성(변수)를 사용하여 인덱싱함 => 행번호 사용!

 

2. loc 속성 사용

시리즈 객체의 인덱스로 인덱싱함

 

3. 대괄호 사용

명시적인 걸 보여주려면 1번과 2번의 방법이 더 효과적이긴 함

 

Series 슬라이싱

1. 행번호를 사용

iloc[시작 행번호: 끝 행번호]의 형태로 사용함

 

2. 인덱스 사용

loc[시작 인덱스: 끝 인덱스] 

이건 끝 인덱스를 포함함!!!

 

여러 값을 인덱싱 하는 법

시리즈에선 연속적이지 않은 여러 개의 값을 한번에 가져오는 것이 가능함

어떻게?

- 행 번호 또는 인덱스를 파이썬 리스트로 구성

- loc 또는 iloc 속성에서 해당 리스트를 사용

 

Series에 값 추가

딕셔너리와 유사한 방식으로 값 추가 가능

s.loc[인덱스] = 값

 

Series 삭제

drop메서드를 이용한다

- 원본은 유지되고 값이 삭제된 시리즈 객체를 리턴

- s.drop('인덱스')

- s.drop(['인덱스1', '인덱스2'])

 

기존 s에서 'a'인덱스가 사라지지 않은 상태로 'b','c'인덱스에 해당하는 값이 사라진 것을 볼 수 있음

 

Series 수정

Serie의 행번호나 인덱스를 사용하여 value를 수정 가능함

 

Series의 연산

위에서 한번 언급했듯이 series구조를 이용해서 반복문 없이 연산이 가능함!!

 

그럼 사칙연산은?

값은 인덱스를 기준으로 사칙 연산이 반복됨 => 반복문 안 써도 됨~

from pandas import Series

high = Series([100,200,300,400])
low = Sereis([10,20,30,40])
diff = high-low
print(diff)
'''
0     90
1    180
2    270
3    360
dtype: int64
'''

 

인덱스를 지정해주었을 경우 인덱스가 같은 데이터 간의 사칙연산이 적용됨

from pandas import Series

high = Series([100,200,300,400], ["a", "b", "c", "d"])
low = Series([10,20,30,40], ["a", "b", "c","e"])
diff = high-low
print(diff)
'''
a     90.0
b    180.0
c    270.0
d      NaN
e      NaN
dtype: float64
'''

 

비교연산

비교 연산자의 결과로 Boolean 타입이 저장된 시리즈가 리턴됨

s = Series([100,200,300,400])
cond = s > 300
print(cond)
'''
0    False
1    False
2    False
3     True
dtype: bool
'''

 

Series 필터링

True/False 값을 통해서 True 값만 필터링 가능함

s = Series([100,200,300,400])
cond = [False, True, True, False]
print(s[cond])
'''
1    200
2    300
dtype: int64
'''

 

비교 연산자의 결과 시리즈를 사용하여 인덱싱하면 조건을 만족하는 데이터만 필터링이 가능함

s = Series([100,200,300,400])
cond = s > 300
print(s[cond])
'''
3     400
dtype: int64
'''

관련글 더보기