Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 딕셔너리와 명시적 인덱스 값으로 시리즈(Series) 데이터 구조 생성하는 방법

pandas의 시리즈(Series)는 레이블(label)이 붙은 1차원 배열 구조로, 다양한 방식으로 생성할 수 있습니다. 이 글에서는 파이썬의 딕셔너리(Dictionary) 자료구조를 활용해 시리즈를 만들고, 동시에 사용자가 직접 지정한 인덱스 값을 적용하는 방법을 알아봅니다.

딕셔너리는 키(key)와 값(value)이 한 쌍을 이루는 매핑(mapping) 형태의 파이썬 기본 자료구조입니다. 이러한 특성 덕분에 딕셔너리의 키를 시리즈의 인덱스로, 값을 시리즈의 데이터로 자연스럽게 연결할 수 있습니다.

예제 1: 딕셔너리로 시리즈 생성 후 인덱스 지정하기

import pandas as pd
my_data = {'ab': 11., 'mn': 15., 'gh': 28., 'kl': 45.}
my_index = ['ab', 'mn', 'gh', 'kl']
my_series = pd.Series(my_data, index=my_index)
print("딕셔너리와 명시적 인덱스 값을 사용해 생성한 시리즈 데이터 구조입니다")
print(my_series)

출력 결과

딕셔너리와 명시적 인덱스 값을 사용해 생성한 시리즈 데이터 구조입니다
ab 11.0
mn 15.0
gh 28.0
kl 45.0
dtype: float64

코드 설명

  • 필요한 pandas 라이브러리를 임포트하고, 사용 편의성을 위해 별칭(alias)으로 'pd'를 지정합니다.
  • 키-값 쌍으로 이루어진 딕셔너리 자료구조를 생성합니다.
  • 사용자 정의 인덱스 값을 리스트에 저장합니다. 여기서는 딕셔너리의 키와 동일한 값들을 사용했습니다.
  • pd.Series() 함수에 데이터와 index 인자를 전달하여 시리즈 객체를 생성합니다.
  • 생성된 시리즈를 콘솔에 출력합니다.

인덱스 개수가 딕셔너리보다 많으면 어떻게 될까?

그렇다면 인덱스 리스트의 항목 수가 딕셔너리의 키 개수보다 많으면 어떤 일이 발생할까요? 아래 예제를 통해 직접 확인해 보겠습니다.

예제 2: 인덱스 값이 더 많은 경우

import pandas as pd
my_data = {'ab': 11., 'mn': 15., 'gh': 28., 'kl': 45.}
my_index = ['ab', 'mn', 'gh', 'kl', 'wq', 'az']
my_series = pd.Series(my_data, index=my_index)
print("딕셔너리와 명시적 인덱스 값을 사용해 생성한 시리즈 데이터 구조입니다")
print(my_series)

출력 결과

딕셔너리와 명시적 인덱스 값을 사용해 생성한 시리즈 데이터 구조입니다
ab 11.0
mn 15.0
gh 28.0
kl 45.0
wq NaN
az NaN
dtype: float64

코드 설명

  • 필요한 라이브러리를 임포트하고 별칭을 지정합니다.
  • 키-값 쌍으로 이루어진 딕셔너리 자료구조를 생성합니다.
  • 이번에는 딕셔너리의 요소 개수보다 많은 사용자 정의 인덱스 값을 리스트에 저장합니다.
  • 시리즈를 생성한 뒤 콘솔에 출력합니다.

실행 결과를 보면, 딕셔너리에 대응하는 값이 없는 인덱스('wq', 'az')에는 'NaN'이 할당된 것을 확인할 수 있습니다. NaN은 "Not a Number"의 약자로, 해당 위치에 유효한 데이터가 없음을 나타내는 결측치(missing value) 표기입니다. pandas는 이처럼 인덱스와 데이터의 개수가 일치하지 않더라도 오류를 발생시키지 않고, 누락된 부분을 자동으로 NaN으로 채워 처리해 줍니다.