[Python] Jupiter Notebook에서 Series
파이썬 Series 에 대한 기초적인 설명
Series
DataFrame의 한 컬럼 데이터 세트
Series 역시 DataFrame의 인덱스와 동일한 인덱스를 가진다
즉 Series는 컬럼이 하나인 데이타 구조체이고, DataFrame은 컬럼이 여러개인 데이타 구조체이다
DataFrame을 RDBMS의 테이블과 유사하다면, Series는 테이블의 한 컬럼과 유사다하고 볼 수 있다
Series 의 사용
# from pandas import Series # 이런식으로 한번에 Series만 import도 가능
import pandas as pd
age_in = pd.Series([22,33,44,25,28])
age_in
0 22
1 33
2 44
3 25
4 28
dtype: int64 <br/>
인덱스 값 가져오기
age_in.index
RangeIndex(start=0, stop=5, step=1) #인덱스 범위가 , 0부터 5'전'까지 있고 1씩 오른다.
값을 확인하기
age_in.values #값만 볼때는 array타입으로 나오고 dtype은 int64 **단, 함수표시()를 하면 에러발생
array([22, 33, 44, 25, 28], dtype=int64)
키를 확인하기
age_in.keys
# keys는 인덱스의 별칭 == age_in.index
# keys는 key, value / key, value로 값을 뽑음/ keys() 사용하면 인덱스를 부르는 것과 동일함
RangeIndex(start=0, stop=5, step=1)
인덱스를 지정하며 시리즈를 생성하기
age_in = pd.Series([22,33,44,25,28], index=['가','나','다','라','마'])
age_in
# 인덱스를 지정하지 않고 실행하면 0,1,2,3,..로 나오지만 인덱스를 지정하면 지정한 값이 나옴
가 22
나 33
다 44
라 25
마 28
dtype: int64
인덱스를 지정한 경우 인덱스와 키,밸류를 조회 했을 때
age_in.index # 인덱스
Index(['가', '나', '다', '라', '마'], dtype='object')
age_in.keys #키
<bound method Series.keys of
가 22
나 33
다 44
라 25
마 28
dtype: int64> <br/>
age_in.values #값
array([22, 33, 44, 25, 28], dtype=int64)
'’다’’ 인덱스를 100으로 변경
age_in['다'] = 100
age_in
가 22
나 33
다 100
라 25
마 28
dtype: int64 <br/>
중복된 시리즈 인덱스를 확인 하기
# Series 인덱스 중복 확인
srs = pd.Series(['가','나','다'], index=['a','b','a'])
srs
print(srs['a']) # '가','다' 둘 다 출력
print(srs)
srs[0] # 0번쨰 자리인 '가'만 출력
srs[-1] # srs[2] 정방향 == srs[-1] 역방향
a 가
a 다
dtype: object
a 가
b 나
a 다
dtype: object
'다'
딕셔너리를 시리즈 형태로 변환
# 딕셔러리를 시리즈 형태로 변환
info_list = { 'kim': 25, 'park':22, 'lee':34 }
info_series = pd.Series(info_list) # 그냥 대입하는것으로 시리즈로 변경 가능
info_series
kim 25
park 22
lee 34
dtype: int64 <br/>
# 'lee'의 점수를 90점으로 지정하기
info_series['lee'] = 90 # 결국 lee의 인덱스를 가진 행을 찾아 값을 90으로 변경하는 것이다.
info_series
kim 25
park 22
lee 90
dtype: int64 <br/>
딕셔너리 시리즈 형태로 변환시 , 인덱스값을 따로 잡으면
info_list = { 'kim': 25, 'park':22, 'lee':34 }
info_series = pd.Series(info_list, index=[0,1,2])
# 인덱스를 지정하면 원래 키로 가지고있던 kim,park,lee를 사용할 수 없고 그에 해당하는 값도 넣을 수 없다.
# 따라서 info_list를 가지고 시리즈를 만들겠다고 했지만 결국 0,1,2를 인덱스로 가지는 빈 시리즈를 만들게 되는것이다.
# 인덱스도 넣고 싶고 원래 있는것도 살리고 싶을때, index=[0,1,2,'kim','park','lee'] 와 같이 코딩하면
# 원래 info_list가 가진 키밸류를 살리면서 새로운 0,1,2 인덱스를 생성할 수 있다.
info_series
0 NaN
1 NaN
2 NaN
dtype: float64
Series 인덱스
리스트, 튜플의 index와 dict 의 key 와 유사
같은 값의 index 가 가능 ( 즉, 중복 가능 )
정리
리스트 튜플 index : 일련번호로 변경불가 / 순서 개념이 있다
Series Index : 중복 가능 / 순서 개념이 있다
Dict key : 중복 불가 / 순서 개념 없다
판다스를 사용하는 이유
만일 파이썬의 리스트와 판다스의 Series가 거의 유사하다면, 우리는 왜 파이썬의 리스트가 아닌 판다스의 Series를 사용할까?
파이썬의 리스트를 사용하면 판다스에서 제공하는 다양한 기능을 사용할 수 없기 때문이다.