Studio KimHippo :D

[Python / Pandas] 2. Series 인덱싱, 슬라이싱 본문

Python Study/Pandas

[Python / Pandas] 2. Series 인덱싱, 슬라이싱

김작은하마 2019. 7. 8. 17:49
# -*- coding : utf-8 -*-

import pandas as pd
import numpy as np


# NOTE
# Series 객체는 1차원 NumPy 배열과 표준 파이썬 딕셔너리처럼 동작.

# NOTE 
# Series 객체는 딕셔너리와 마찬가지로 키의 집합을 값의 집합에 매핑
data = pd.Series(np.linspace(0.25, 1, 4), index = ['a', 'b', 'c', 'd'])

print(data['b'])
print('a' in data)
print(data.keys())
print(list(data.items()))

# NOTE
# 딕셔너리와 마찬가지로 새로운 키에 값을 할당해 Series를 확장시킬 수 있다.
data['e'] = 1.25
print(data)

Out [1] :

0.5

 

Out [2] :

True

 

Out [3] :

Index(['a', 'b', 'c', 'd'], dtype='object')

 

Out [4] :

[('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]

 

Out [5] :

a 0.25

b 0.50

c 0.75

d 1.00

e 1.25

dtype: float64

# NOTE
# 슬라이싱, 마스킹, 팬시 인덱싱 등 NumPy 배열과 똑같은 기본 메커니즘으로 배열 형태의 아이템을 선택할 수 있다.

# NOTE : 명시적인 인덱스로 슬라이싱
print(data['a':'c'])

# NOTE : 암묵적 정수 인덱스로 슬라이싱
print(data[0:2])

# NOTE : 마스킹
# REVIEW 
# 마스킹 : 배열에서 조건에 맞는 값들을 선택하기 위해 간단히 Bool 배열을 인덱스로 사용.
print(data[(data > 0.3) & (data < 0.8)])

# NOTE : 팬시 인덱싱
# REVIEW
# 팬시 인덱싱 : 한 번에 여러 배열 요소에 접근하기 위해 인덱스의 배열을 전달.
print(data[['a', 'e']])

# NOTE
# 명시적 인덱스로 슬라이싱 할 때는 최종 인덱스가 슬라이스에 포함됨.
# 암묵적 인덱스로 슬라이싱 할 때는 최종 인덱스가 슬라이스에 포함되지 않음.

Out [1] :

a 0.25

b 0.50

c 0.75

dtype: float64

 

Out [2] :

a 0.25

b 0.50

dtype: float64

 

Out [3] :

b 0.50

c 0.75

dtype: float64

 

Out [4] :

a 0.25

e 1.25

dtype: float64

# NOTE : loc, iloc, ix

data_2 = pd.Series(['a','b','c'], index = [1, 3, 5])

# NOTE
# loc : 명시적인 인덱스를 참조하는 인덱싱과 슬라이싱을 가능하게 함.
print(data_2.loc[1])
print(data_2.loc[1:3])

# NOTE 
# iloc : 암묵적인 파이썬 스타일의 인덱스를 참조하게 해줌.
print(data_2.iloc[1])
print(data_2.iloc[1:3])

Out [1] :

a

 

1 a

3 b

dtype: object

 

Out [2] :

b

 

3 b

5 c

dtype: object

 

참고

O'REILLY 제이크 밴더플래스 저/ 위키북스 김정인 역 - 파이썬 데이터 사이언스 핸드북

'Python Study > Pandas' 카테고리의 다른 글

[Python / pandas] 1. Pandas 객체  (0) 2019.07.08
Comments