[판다스 입문/판다스 자료구조] 시리즈
시리즈는 데이터가 순차적으로 나열된 1차원 배열의 형태를 갖는다.
인덱스(index)가 데이터 값(value)과 일대일 대응되는데, 이런 관점에서 파이썬의 딕셔너리와 비슷한 구조를 갖는다고 할 수 있다.
목차
1. 시리즈 만들기
2. 인덱스 구조
3. 원소 선택
시리즈 만들기
딕셔너리와 시리즈의 구조가 비슷하기 때문에 딕셔너리를 시리즈로 변환하는 방법을 많이 사용한다.
판다스 내장 함수인 Series()를 이용하고, 딕셔너리를 함수의 인자로 전달한다.
딕셔너리의 키는 시리즈의 인덱스에 대응하고, 딕셔너리의 값들이 시리즈의 데이터 값으로 변환된다.
# 예제 1-1
import pandas as pd
dict_data = {'a': 1, 'b': 2, 'c': 3}
sr = pd.Series(dict_data)
print(type(sr))
print('\n')
print(sr)
위 예제를 통해 딕셔너리를 시리즈로 변환해 본다.
{'a': 1, 'b': 2, 'c': 3}의 '키:값' 구조를 갖는 딕셔너리를 정의하여 변수 dict_data에 저장한다.
변수 dict_data에 저장되어 있는 딕셔너리를 Series() 함수에 전달하면 시리즈 객체로 변환된다.
Series() 함수가 반환한 시리즈 객체를 변수 sr에 저장한다.
type() 함수로 변수 sr에 저장된 객체의 자료형을 확인해 보면, 시리즈 클래스이다.
print() 함수로 시리즈 객체를 출력하면 인덱스 'a', 'b', 'c'는 왼쪽에 표시되고, 오른쪽에는 짝을 이루는 데이터 값 '1', '2', '3'이 표시된다. 시리즈를 구성하는 데이터 값의 자료형(dtype)은 정수형(int64)이다.
인덱스 구조
인덱스는 자기와 짝을 이루는 데이터 값의 순서와 주소를 저장한다.
인덱스에는 크게 정수형 위치 인덱스(integer position)와 인덱스 이름(index name) 또는 인덱스 라벨(index label)으로 나뉜다.
정수형 위치 인덱스는 말그대로 정수로 해당 값의 위치를 표현하는 인덱스이다.
인덱스 이름(라벨)은 인덱스의 이름이라고 생각하면 편하겠다.
# 예제 1-2(1)
import pandas as pd
list_data = ['2019-01-02', 3.14, 'ABC', 100, True]
sr = pd.Series(list_data)
print(sr)
이번 예제에서는 리스트를 시리즈로 변환할 때 딕셔너리의 키처럼 인덱스로 변환될 값이 없다.
이렇게 인덱스를 별도로 정의하지 않으면 디폴트로 정수형 위치 인덱스(0, 1, 2, ~)가 자동으로 지정된다.
# 예제 1-2(2)
idx = sr.index
val = sr.values
print(idx)
print('\n')
print(val)
시리즈의 index 속성과 value 속성을 이용하면 인덱스 배열과 데이터 값의 배열을 불러올 수 있다.
실행결과에서 인덱스는 0~4 범위의 정수를 갖는 RangeIndex 객체로 표시된다(이 때 범위의 마지막 값은 포함되지 않음).
데이터 값 배열은 원래 데이터인 list_data의 리스트 원소 배열의 순서를 유지한 상태로 입력된다.
원소 선택
원소의 위치를 나타내는 주소 역할을 하는 인덱스를 이용하여 시리즈의 원소를 선택한다.
하나의 원소를 선택할 수도 있고, 여러 원소를 한꺼번에 선택할 수도 있다. 파이썬 리스트 슬라이싱 기법과 비슷하게
인덱스 범위를 지정하여 원소를 선택하는 방법도 있다.
정수형 위치 인덱스는 대괄호 안에 위치를 나타내는 숫자를 입력하고, 인덱스 이름(라벨)을 사용할 때는 대괄호 안에
이름과 함께 따옴표를 입력한다(파이썬 딕셔너리에서 키로 값을 검색하는 것과 비슷).
# 예제 1-3(1)
import pandas as pd
tup_data = ('영인', '2010-05-01', '여', True)
sr = pd.Series(tup_data, index=['이름', '생년월일', '성별', '학생여부'])
print(sr)
파이썬 튜플을 시리즈로 변환한다. 튜플도 리스트처럼 딕셔너리의 키에 해당하는 값이 없어서 시리즈로 변환할 때 정수형 위치 인덱스가 자동 지정된다.
리스트 또는 튜플을 시리즈로 만들 때 정수형 위치 인덱스 대신 인덱스 이름을 따로 지정할 수 있다.
Series() 함수의 index 옵션에 인덱스 이름을 직접 전달하는 방식이다.
왼쪽의 인덱스 위치에는 index 옵션에 전달한 4개의 인덱스 이름이 표시되고, 오른쪽 값 위치에는 함수에 전달된 튜플의 원소 값들이 표시된다.
# 예제 1-3(2)
print(sr[0])
print(sr['이름'])
인덱스를 이용하여 원소를 선택할 때는 대괄호 안에 인덱스를 입력한다.
위 예제에서 시리즈의 첫 번째 데이터를 선택하기 위해 대괄호 안에 정수형 위치 인덱스(0)와 인덱스 라벨('이름')을 입력하였다.
모두 같은 원소(영인)를 반환한다.
# 예제 1-3(3)
print(sr[[1, 2]])
print('\n')
print(sr[['생년월일', '성별']])
여러 개의 원소를 리스트 형태로 대괄호 안에 입력하면 짝을 이루는 원소 데이터를 모두 반환한다.
# 예제 1-3(4)
print(sr[1:2])
print('\n')
print(sr['생년월일':'성별'])
인덱스 범위를 지정하여 선택하는 방법이다.
정수형 위치 인덱스를 사용할 때는 범위의 끝이 포함되지 않는다.
인덱스 이름을 사용할 때는 범위의 끝이 포함된다.
![]() |
|
'공부 > 파이썬 머신러닝 판다스 데이터 분석' 카테고리의 다른 글
[판다스 입문/산술연산] 시리즈 연산 (0) | 2022.10.18 |
---|---|
[판다스 입문/산술연산] (0) | 2022.10.18 |
[판다스 입문/인덱스 활용] (0) | 2022.10.14 |
[판다스 입문/판다스 자료구조] 데이터프레임 (1) | 2022.10.14 |
[판다스 입문/판다스 자료구조] (0) | 2022.10.12 |