맞춤형 플랫폼 개발 도전기 (웹개발, 딥러닝, 블록체인)

Python Pandas Basic 1 (Series) 본문

딥러닝·머신러닝/Python

Python Pandas Basic 1 (Series)

경이가 꿈꾸는 플랫폼 개발 2021. 11. 4. 01:49

pandas의 기본 객체 중 하나로, numpy의 ndarray를 기반으로 인덱싱 기능이 추가된 1차원 배열을 나타낸다.

value index 의 형태로 작성이 되어 있고

index를 지정하지 않을 시, 기본적으로 ndarray와 같이 0-based 인덱스 (0, 1, 2, ... ) 생성, 지정할 경우 명시적으로 지정된 index를 사용

Series는 순서 개념이 없고, 해당 index에 어떤 값이 있는지가 중요하다.

특징들로는 index가 정수일 필요가 없다는 것, 그리고 dictionary의 key와 다르게 index도 중복이 가능하다는 것이다.

 

생성시에는 아래와 같은 형태로 생성한다.

pd.Series(  
    data=None,    첫번째는 data
    index=None,  두번째는 index
    dtype=None,
    name=None,
    copy=False,
    fastpath=False,
)

 

.index 로 index 값들을 확인하고, .values로 value 값들을 확인한다.

data[[index값, index값, ...]] 이런식으로 조회하면 index - value 쌍으로 확인 가능하다.

pandas의 자료형에서 list로 복수의 자료를 확인하려면 반드시 [ ] list 안에 넣어서 접근해야 한다. 안 그러면 error

index는 덮어쓰기가 가능하지만, value는 덮어쓰기가 불가하다.

 

 

1. Boolean Selection

boolean Series가 []와 함께 사용되면 True 값에 해당하는 값만 새로 반환되는 Series객체에 포함되고, 다중조건일 경우에는 & , | 을 사용해 연결한다.

data = pd.Series(np.arange(10), np.arange(10) + 1)
data[data > 5]

# 7     6
# 8     7
# 9     8
# 10    9

data[data.index > 5]

# 6     5
# 7     6
# 8     7
# 9     8
# 10    9

 

2. Series 값 변경

추가 및 업데이트는 인덱스를 이용하고, 삭제는 drop을 사용한다. (drop은 원본 변화시키지 않는다)

inplace = True 옵션이 들어가면 원본을 변화시킨다는 것을 의미한다.

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

data['a'] = 200

# a    200
# b    101
# c    102
# d    103
# e    104

data.drop('a')

# b    101
# c    102
# d    103
# e    104

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

# a    300
# b    900
# c    102
# d    103
# e    104

 

3. Slicing

특징적인 것은 index가 문자열일 경우 slicing하면 마지막도 포함되게 slicing된다.

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

# c    101
# b    102
# d    103

data['b':'c':-1]

# b    102
# c    101

 

4. MultiLevel Index

index 가 여러 층일 수 있다. Multilevel에서 index는 tuple이다.

data = pd.Series(
    np.arange(100, 106),
    index = [
        # 1차 level (level = 0)
        ['a', 'a', 'b', 'b', 'c', 'c'],
        # 2차 level (level = 1)
        [1, 2, 1, 2, 1, 2]
    ]
)

# a  1    100
#    2    101
# b  1    102
#    2    103
# c  1    104
#    2    105

 

5. xs()

 [ ] 라는 index 대신 xs()안에 넣는다고 생각하면 쉽다. level은 여러개 지정 가능, 순서도 지정 가능

data.xs(('a',1))

# 100

data.xs(('b', 2), level = (0, 1))

# b 2 103
Comments