판다스의 기본 자료 구조 중 하나인, 시리즈(Series)
에 대해 알아봅시다.
판다스의 자료구조 시리즈
는, 1차원 배열로서 다음 세가지의 특징을 가집니다. 차원 배열 구조이자, 인덱스를 사용할 수 있고, 데이터 타입(dtype)을 가집니다.
🔘차원 배열 구조 - Series : 1차원 배열
🔘인덱스(index) 사용 가능 - 인덱싱/슬라이싱
🔘데이터 타입을 가짐 (dtype)
다양한 방법으로 Series객체를 생성해봅시다.
numpy array로 판다스 시리즈 객체를 만들 수 있습니다.
import numpy as np
import pandas as pd
arr = np.arange(100, 105)
print(arr)
>> array([100, 101, 102, 103, 104])
s = pd.Series(arr)
print(s)
>> 0 100
1 101
2 102
3 103
4 104
dtype: int64
아래 코드처럼 dtype을 지정하면 배열 원소의 데이터 타입을 조정해줄 수도 있습니다.
import pandas as pd
s = pd.Series(arr, dtype='int32')
print(s)
>> 0 100
1 101
2 102
3 103
4 104
dtype: int32
리스트로 시리즈 객체를 생성해봅시다.
import pandas as pd
s = pd.Series([100, 101, 102, 103, 104])
print(s)
>> 0 100
1 101
2 102
3 103
4 104
dtype: int64
위의 코드를 보면, 넘파이 배열을 사용해 만든 시리즈 객체와 동일한 객체가 생성되는 것을 확인할 수 있습니다.
import pandas as pd
s = pd.Series(['사과', '딸기', '포도', '수박', '참외'])
print(s)
>> 0 사과
1 딸기
2 포도
3 수박
4 참외
dtype: object
string 타입의 요소들로 된 리스트를 통해 시리즈 객체를 생성한 모습입니다. 판다스에서는 문자열을 objcet라는 자료형으로 나타내는데, 이를 'dtype : object'에서 확인할 수도 있습니다.
import pandas as pd
s = pd.Series([91, 3.14, '사과', 4, 77])
print(s)
>> 0 91
1 3.14
2 사과
3 4
4 77
dtype: object
리스트에 다양한 데이터 타입이 담겨있습니다. 이를 통해 생성한 Series 객체의 데이터 타입은 object
타입을 갖게 됩니다.
0 사과
1 딸기
2 포도
3 수박
4 참외
dtype: object
생성된 Series의 모습을 살펴보면, 0부터 순차적으로 부여되는 index를 확인할 수 있습니다. 이를 RangeIndex
라고 부릅니다.
기본값으로 부여되는 RangeIndex를 직접 지정해 줄 수도 있는데요, 객체를 생성할때 지정해주는 방법을 알아봅시다. 물론 이미 생성된 시리즈 객체의 인덱스를 바꾸거나, 데이터 프레임의 인덱스를 바꾸는 방법들도 나중에 알아볼 것입니다.
import pandas as pd
tem = pd.Series([-2, 2, 6, 12])
print(tem)
>> 0 -2
1 2
2 6
3 12
dtype: int64
1월부터 4월까지의 평균 온도 데이터가 담긴 리스트로 시리즈 객체를 만들었다고 가정해봅시다. 우리는 0부터 자동으로 지정되는 RangeIndex대신 수동으로 인덱스를 지정해주고 싶습니다.
import pandas as pd
tem = pd.Series([-2, 2, 6, 12], index=['Jan', 'Feb', 'Mar', 'Apr'])
print(tem)
>> Jan -2
Feb 2
Mar 6
Apr 12
dtype: int64
다음과 같이 시리즈 원소의 개수와 동일한 index를 지정해주면, 시리즈 객체의 인덱스가 원하는 값으로 바뀌게 됩니다.
print(tem['Jan'])
>> -2
지정한 인덱스를 통해 해당 인덱스의 데이터를 출력할 수 있습니다. 위의 예는 1월 평균 온도 데이터를 'Jan' 인덱스를 통해 출력하는 과정입니다.
Jan -2
Feb 2
Mar 6
Apr 12
dtype: int64
1월부터 4월까지의 평균 온도 데이터로 생성한 Series
tem을 예로 들어, 시리즈의 여러가지 속성을 알아봅시다.
Series 데이터 값(value)만 넘파이 배열(ndarray) 형식으로 가져옵니다.
print(tem.values)
>> array([-2, 2, 6, 12], dtype=int64)
인덱스를 제외한 값들, 그리고 데이터 타입(dtype)이 출력됨을 알 수 있습니다.
넘파이 배열에서 ndim은 차원을 나타냅니다. 역시 판다스 라이브러리 Series는 1차원 자료구조이므로 ndim 출력시 1이 출력됩니다.
print(tem.ndim)
>> 1
데이터의 형상(shape)을 알아보기 위해 사용되는 shape은, Series에서 데이터의 갯수를 보여줍니다. 튜플 형식으로 출력되며 값이 n개라면 (n, ) 처럼 출력됩니다.
print(tem.shape)
>> (4, )