Processor

【Pandas】 Series 요소 접근과 연산

작성자 임베디드코리아 작성일26-04-16 00:08 조회91회 댓글0건
***<Series 요소 접근>***
◆ Pandas의 Series에서 개별 요소에 접근하는 방법은 여러 가지가 있다.
◆ 각 방법은 상황에 따라 유용하게 사용할 수 있으며, 인덱스나 레이블을 사용해 접근할 수 있다.

[ 1 ] 인덱스로 접근하기
    Python 리스트처럼 Series의 각 요소에 인덱스를 사용해 접근할 수 있다.
      - 인덱스는 0부터 시작한다.
_____________________________________________________
import pandas as pd
s = pd.Series([10, 20, 30, 40])
# 첫 번째 요소 접근
print(s[0])
-----------------------------------------------------
결과:
10

[ 2 ]  레이블(인덱스 이름)로 접근하기
      Series에서 인덱스에 레이블(이름)을 지정할 수 있으며, 이를 통해 값을 접근할 수 있다.
_______________________________________________________________
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
# 인덱스 레이블 'a'에 해당하는 값에 접근
print(s['a'])
---------------------------------------------------------------
결과:
10


[ 3 ]  iloc을 사용해 정수 위치로 접근하기
      - iloc는 인덱스의 정수 위치를 기반으로 요소에 접근한다.
      - iloc은 인덱스가 숫자가 아니더라도 위치에 따라 접근할 수 있다.
_______________________________________________________________
# 두 번째 요소 접근 (0부터 시작)
print(s.iloc[1])
---------------------------------------------------------------
결과:
20


[ 4 ]  loc을 사용해 레이블로 접근하기
      - loc는 인덱스 레이블을 사용해 요소에 접근할 수 있다.
      - 숫자형 인덱스가 아닌 경우에도 유용하다.
_______________________________________________________________
# 인덱스 레이블 'c'에 해당하는 값에 접근
print(s.loc['c'])
---------------------------------------------------------------
결과:
30

[ 5 ]  슬라이싱(Slicing)으로 여러 요소 접근하기
      - 리스트와 마찬가지로 Series에서도 슬라이싱을 사용할 수 있다.
      - 슬라이싱을 통해 여러 값을 가져올 수 있으며, 범위를 지정한다.

_______________인덱스를 사용한 슬라이싱:_________________
# 첫 번째에서 세 번째 요소까지 접근 (0, 1, 2)
print(s[0:3])
--------------------------------------------------------------
결과:
a    10
b    20
c    30
dtype: int64


_______________레이블을 사용한 슬라이싱:_________________
# 'a'부터 'c'까지 슬라이싱
print(s['a':'c'])
--------------------------------------------------------------
결과:
a    10
b    20
c    30
dtype: int64


[ 6 ]  조건을 사용한 필터링
      Series에서 조건을 사용해 특정 조건을 만족하는 요소들에 접근할 수 있다.
______________________________________________
# 20보다 큰 요소만 접근
print(s[s > 20])
----------------------------------------------
결과:
c    30
d    40
dtype: int64


[ 7 ]  여러 인덱스를 사용해 접근하기
      -리스트나 배열처럼 여러 인덱스나 레이블을 리스트로 전달하여 여러 요소에 동시에 접근할 수 있다.
______________________________________________
# 'a'와 'c'에 해당하는 요소만 접근
print(s[['a', 'c']])
----------------------------------------------
결과:
a    10
c    30
dtype: int64


***< Series 연산 >********************************************
◆ 판다스의 시리즈(Series)는 인덱스(Index)를 기반으로 동작하기 때문에 일반적인 리스트 연산보다 훨씬 강력하다.
◆ 시리즈 연산의 핵심은 '인덱스 정렬(Index Alignment)'에 있다.

[ 1 ] 산술 연산 (Arithmetic Operations)
      - 시리즈에 숫자를 더하거나 곱하면 모든 요소에 동일한 연산이 적용되는 브로드캐스팅(Broadcasting)이 일어난다.
_____________________________________________________________________________________
import pandas as pd

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])

# 1. 시리즈와 숫자 연산
print(s + 5)  # 모든 요소에 5를 더함

# 2. 시리즈와 시리즈 연산
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s1 + s2) # 같은 인덱스끼리 더함
--------------------------------------------------------------------------------------

[ 2 ]  인덱스 정렬 (Index Alignment)
      - 판다스 연산의 가장 큰 특징은 인덱스가 서로 달라도 알아서 짝을 맞춰 연산한다.
      - 만약 한쪽에만 인덱스가 존재한다면 결과는 NaN(Not a Number, 결측치)으로 처리된다.
_____________________________________________________________________________________
s1 = pd.Series([1, 2], index=['a', 'b'])
s2 = pd.Series([10, 20], index=['b', 'c'])

print(s1 + s2)
# 결과:
# a    NaN  (s2에 a가 없음)
# b    22.0 (2 + 20)
# c    NaN  (s1에 c가 없음)
--------------------------------------------------------------------------------------

[ 3 ]  연산 메서드와 fill_value
      NaN이 발생하는 것을 방지하고 싶다면, 연산 기호(+, -) 대신 연산 메서드를 사용하고 기본값을 지정할 수 있다.

연산기능            메서드
---------------------------------------------------
 덧셈                s1.add(s2, fill_value=0)
 뺄셈                s1.sub(s2, fill_value=0)
 곱셈                s1.mul(s2, fill_value=1)
 나눗셈            s1.div(s2, fill_value=1)
----------------------------------------------------

[ 4 ]  비교 및 논리 연산
      시리즈 내의 데이터가 특정 조건에 맞는지 확인하여 True/False 형태의 불리언(Boolean) 시리즈를 반환한다.
      - 이 결과는 데이터를 필터링할 때 매우 유용하다.
_____________________________________________________
s = pd.Series([10, 20, 30, 40])

# 25보다 큰 요소 찾기
mask = s > 25
print(mask)
# 0    False
# 1    False
# 2    True
# 3    True

# 조건에 맞는 데이터만 추출
print(s[mask])
-------------------------------------------------------