목차



pandas

pandas시리즈(Series)데이터프레임(DataFrame) 같은 자료 구조를 내장하고 있으며 이들에 대한 생성 및 전처리에 필요한 기본 함수들이 내장된 모듈입니다. NA에 대한 연산이 쉽고 빠르게 되어 있으며 산술연산에 대해도 벡터연산이 가능합니다. 하지만, 문자열 처리하는 경우에는 벡터연산 불가하기 때문에 map, apply, applymap 등의 함수로 mapping 처리가 필요합니다. 모듈 불러올 때 보통 약자를 pd로 지정하여 불러옵니다.

import pandas as pd



시리즈 (Series)

시리즈(Series)는 데이터프레임(DataFrame)을 구성하는 1차원 자료 구조로, 하나의 데이터 형(Data type)만 허용합니다. Key-Value 형식의 자료구조를 가지고 있는데 Key는 인덱스(index/행 번호)를 의미를 합니다.​

우선 시리즈를 불러올 때마다 옆에 pd.를 붙이지 않고 편하게 불러오도록 시리즈만 따로 불러옵시다.

from pandas import Series


1. 생성

시리즈를 생성하는 방법은 다음 코드에서 볼 수 있습니다. Series() 함수 내에 리스트로 전달하는 내용이 값(Value)가 되고 함수 내에 index = []로 전달하는 내용이 Index(key)가 됩니다.

s1 = Series([1,2,3,4])

s2 = Series([1,2,3,4,'5'])
s2.dtypes
Out: dtype('O')
#문자 '5' 하나로 인해 시리즈의 데이터 형이 문자로 바뀌었습니다.

s3 = Series([1,2,3,4],     index = ['a','b','c','d'])

s5 = Series([10,20,30,40], index = ['A','b','c','d'])


2. 연산

입력 출력(key - values)
s1 + 1 0 2
1 3
2 4
3 5
s1 + s1
(같은 인덱스를 갖는 경우
같은 인덱스끼리 값 연산)
0 2
1 4
2 6
3 8
s3 + s5
(다른 인덱스를 갖는 경우
Outer Join으로 연산)
A NaN
a NaN
b 22.0
c 33.0
d 44.0


3. 색인

입력 출력(key - values)
s1[0] 1
s1[0:3] 0 1
1 2
2 3


4. 기타 메소드

메소드 설명
s1.dtype 시리즈를 구성하는 데이터 타입
s2.dtypes 복수형 가능
s1.index 시리즈의 인덱스 부분
s1.values 시리즈의 값 부분


5. 인덱스

인덱스값이 따로 지정되어 있지 않은 경우 index값을 부여하며, index값을 가지고 있을때는 해당 index값으로 색인을 진행합니다.

입력 출력(key - values)
s1 = Series([1,2,3,4],
        index = [‘a’,’b’,’c’,’d’]);
s1
a 1
b 2
c 3
d 4
s2 = Series(s1,
        index=[‘d’,’c’,’a’,’b’]);
s2
d 4
c 3
a 1
b 2
s3 = Series(s1,
        index=[‘A’,’B’,’C’,’D’]);
s3
(‘A’ … 에 해당하는 index가 없기 때문에
불러올 값이 없을때 NaN을 출력)
A NaN
B NaN
C NaN
D NaN
s1.index = [‘A’,’B’,’C’,’D’];
s1
인덱스 변경reindex)
A 1
B 2
C 3
D 4


※ index 개별 수정 주의사항

#Python에서는 index 개체 직접 수정을 막아놓았습니다.
s1.index[0] = 'AA'
Traceback (most recent call last):

  File "<ipython-input-10-8a7bea728eab>", line 1, in <module>
    s1.index[0] = 'AA'

  File "C:\Users\kmj\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3910, in __setitem__
    raise TypeError("Index does not support mutable operations")

TypeError: Index does not support mutable operations


#하지만 뒤에 .values를 사용한뒤 실행하면 수정가능합니다.
s1.index.values[0] = 'AA'; s1
Out[12]: 
AA    1
b     2
c     3
d     4
dtype: int64


6. 시리즈 내의 NaN 찾기

s2 = Series([NA,2,3,4], index = [‘a’,’b’,’c’,’d’])

설명 \ 형식 메서드 형식 함수 형식
null 찾기 s2.isnull() pd.isnull(s2)
null 아닌 값 찾기 s2.notnull() pd.notnull(s2)


물론 NaN은 모듈 numpy에 있기 때문에 모듈 불러오는 것을 잊지 말자.



이번에는 시리즈에 대한 적어보았습니다. 적당한 타이밍에 글을 끊느라 짧은 글이 되었네요. 다음 포스팅에는 데이터 프레임을 다룰 예정인데 데이터 프레임에 대한 내용은 상당히 분량이 많아서 두 글에 나누어서 작성하게 될 것 같습니다.