Pandas - Series 정의, 생성, 연산

안녕하세요 jay입니다.
오늘은 파이썬 대표 라이브러리인 Pandas의 데이터 타입 중 하나인
Series에 대해 알아보도록 하겠습니다.

1. Series 정의

Series는 list와 dictionary의 장점을 섞어 놓은 자료구조입니다.
1차원 배열 형태이며, index와 value를 가지고 있습니다.
index : value를 선택할 때 주소 역할을 하는 배열(값이 모두 달라야합니다.)
value : 데이터 부분에 해당하는 배열

2. Series 생성

Series를 생성하는 법은 크게 list로 만들기, dictionary로 만들기, numpy array로 만들기
3가지 방법이 있습니다. 아래 예시를 보면서 확인해보겠습니다.

# Series : list와 dictionary의 장점을 섞어 놓은 자료구조
# 1차원 배열 형태
# index : value를 선택할 때 주소 역할을 하는 배열(값이 모두 달라야함)
# value : 데이터 부분에 해당하는 배열

# list로 Series 만들기
# value만
import pandas as pd
import numpy as np 

score = [10,20,30,40,50]
s = pd.Series(score)
print(s)

"""
0    10
1    20
2    30
3    40
4    50
dtype: int64
"""

# list로 Series 만들기2
# index + value

names = ['Jung','Kim','Lee']
score = [100,80,90]
s2 = pd.Series(score, index = names)
print(s2)
"""
Jung    100
Kim      80
Lee      90
dtype: int64
"""


# dictionary로 Series 만들기
# dictionary의 key가 Series의 index
# dictionary의 value가 Series의 value가 됨

dic = {'SHIN' : 77, 'KIM': 100, "LEE" : 85}
s3 = pd.Series(dic)
print(s3)

"""
SHIN     77
KIM     100
LEE      85
dtype: int64
"""

# numpy array로 Series 만들기
# index와, value를 각각 만들어야함

name = np.array(["KIM","LEE","JUNG"])
score = np.array([80,60,77])
s4 = pd.Series(score , index = name)
print(s4)

"""
KIM     80
LEE     60
JUNG    77
dtype: int64
"""

1) List로 Series만들기 : list로 Series를 생성할 때, value만 혹은 index, value 둘다 가진 Series를 만들 수 있다.

2) Dictionary로 만들기 : dictionary의 key가 index이고, dictionary의 value가 Series의 value이다.

3) numpy array로 만들기 : numpy array도 list와 마찬가지로, Series를 생성할 때, value만 혹은 index, value 둘다 가진 Series를 만들 수 있다.

3. Series 연산

Series간 사칙 연산이 가능하다. 그리고 인덱스가 있는 Series이면, 인덱스 기준으로 사칙연산을 한다.
Series의 인덱스는 단지 key역할만 하고, values만 연산에 관여한다는 것을 알 수 있다.


# Series의 산술 연산
# Series간 덧셈 : 순서와 상관없이 같은 index명을 갖는 값끼리 더함
# values만 연산에 관여
# index가 같은 값끼리 연산 수행

import pandas as pd
import numpy as np

name1 = np.array(["KIM","LEE","JUNG","SHIN","OH"])
score1 = np.array([50,30,20,80,70])
s1 = pd.Series(score1, index=name1)
print(s1)

"""
KIM     50
LEE     30
JUNG    20
SHIN    80
OH      70
dtype: int64
"""


name2 = np.array(["LEE","KIM","OH","JUNG","SHIN"])
score2 = np.array([40,80,60,90,50])
s2 = pd.Series(score2, index=name2)
print(s2)

"""
LEE     40
KIM     80
OH      60
JUNG    90
SHIN    50
dtype: int64

"""

# 일반 연산 예제
print(s1 * 2)
"""
KIM     100
LEE      60
JUNG     40
SHIN    160
OH      140
dtype: int64
"""

print(s1+s2) # 인덱스 끼리 더해짐

"""
JUNG    110
KIM     130
LEE      70
OH      130
SHIN    130
"""

댓글