본문 바로가기

코딩/머신러닝&데이터 분석 강의

[머신러닝 인강] 11-1주차: Series 연산, boolean selection, 슬라이싱

<11-1주차 수강 클립>

04. 데이터 분석을 위한 Python (Pandas)

04. Series 타입의 이해 - 03. Series 데이터 연산하기

05. Series 타입의 이해 - 04. Series 데이터 Boolean Selection으로 데이터 선택하기

06. Series 타입의 이해 - 05. Series 데이터 변경 & 슬라이싱 하기

 


 

이번 주차에는 Series 데이터 간의 연산, boolean selection으로 데이터 선택,

데이터 변경 그리고 슬라이싱까지 배워보는 시간이었습니다.

>>수강 인증샷<<

 


 

04. Series 타입의 이해 - 03. Series 데이터 연산하기

 

- index를 기준으로 연산

같은 '인덱스'끼리의 연산

s1 = pd.Series([1, 2, 3, 4], ['a', 'b', 'c', 'd'])
s2 = pd.Series([6, 3, 2, 1], ['d', 'c', 'b', 'a'])

s1 + s2

 

- 산술 연산

Series의 경우에도 스칼라와의 연산은 각 원소별로 스칼라와의 연산이 적용됨

Series끼리의 연산은 각 인덱스에 맞는 값끼리 연산이 적용, 인덱스의 pair가 맞지 않으면 해당 인덱스에 대한 값은 NaN로 생성됨

s1 ** 2
s1 ** s2
s1['k'] = 7
s2['e'] = 9

s1 + s2

 


05. Series 타입의 이해 - 04. Series 데이터 Boolean Selection으로 데이터 선택하기

 

-Boolean selection

boolean Series가 []와 함께 사용되면 True에 해당하는 인덱스의 값만으로 새로운 Series를 만들어 반환

다중조건의 경우, &(and), |(or)을 사용하여 연결 가능함

s = pd.Series(np.arange(10), np.arange(10)+1)

 

s > 5

: boolean Series (True와 False로 구성됨)

 

s[s>5]

: boolean Series를 기존 Series의 index로 사용해 boolean selection (Series에서 조건에 해당하는 값만을 select)

 

s.index > 5 #index값을 기준으로 비교

: boolean Series가 아닌 ndarray로 반환

 

s[s.index > 5]

: boolean ndarray 역시 Series의 selection에 사용될 수 있음

 

(s > 5) & (s < 8)

: multiful한 조건의 boolean Series는 괄호()로 묶기

 

s[(s > 5) & (s < 8)]

 

(s >= 7).sum() #False * 7 + True * 3 = 3

: boolean Series에 sum함수 호출 → True의 개수

 

(s[s >= 7]).sum() #7 + 8 + 9 = 24

: 기존 Series에서 조건에 맞는 원소들의 합

 

s >= 7 #boolean 'type' Series
s[s >= 7] #'selected' Series by boolean

 


 

06. Series 타입의 이해 - 05. Series 데이터 변경 & 슬라이싱 하기

 

- Series 값 변경

추가 및 업데이트: 인덱스를 이용

삭제: drop 함수 이용

*) drop을 포함한 대부분의 함수는 호출한 객체에 대해 연산하지 않고 복사본을 생성해서 연산 후 복사본 반환 (원본은 수정하지 않음)

 

s = pd.Series(np.arange(100, 105), ['a', 'b', 'c', 'd', 'e'])

#업데이트(수정)
s['a'] = 200

#추가
s['k'] = 300

: 업데이트, 추가

 

s.drop('k') #기존 series를 수정한 후 '새로운' 시리즈 반환

: 기존 Series 자체에서는 변화 없음

 

s.drop('k', inplace=True) #inplace 기본값이 False

: 반환값 없음, drop함수를 호출한 원본 객체 s에 대해 바로 연산 (많은 함수가 inplace 파라미터를 가짐

 

s[['a', 'b']] = [300, 900]

: multiful한 값에 접근, 업데이트

 

- 슬라이싱(slicing)

리스트, ndarray와 동일하게 적용됨

 

#case1: 인덱스가 숫자인 경우
s1 = pd.Series(np.arange(100, 105))
s1[1:3]

: index로 슬라이싱, 숫자 base 인덱스는 기존 방식과 동일

 

#case2: 인덱스가 문자인 경우
s2 = pd.Series(np.arange(100, 105), ['a', 'c', 'b', 'd', 'e'])
s2[1: 3]

: 문자라도 zero-based로 계산해서 위에서 아래로 순차적으로 slicing

 

s2['c':'d']

: 문자열 인덱스는 숫자 인덱스와 달리 마지막 인덱스를 포함함!

 


 

강의 링크: https://bit.ly/3cB3C8y

반응형