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

파이썬 Pandas 시리즈에 존재하지 않는 인덱스에 접근하면 어떻게 될까?

Pandas 시리즈에서 인덱스 값을 사용자 지정하면 series_name['index_value'] 형태로 해당 요소에 접근할 수 있습니다. 이때 전달된 'index_value'는 원본 시리즈의 인덱스와 비교되며, 일치하는 값이 발견되면 그에 해당하는 데이터가 콘솔에 출력됩니다.

반면, 접근하려는 인덱스가 시리즈에 존재하지 않으면 KeyError 오류가 발생합니다. 아래 예제를 통해 직접 확인해 보겠습니다.

예제 코드

import pandas as pd
my_data = [34, 56, 78, 90, 123, 45]
my_index = ['ab', 'mn' ,'gh','kl', 'wq', 'az']
my_series = pd.Series(my_data, index = my_index)
print("The series contains following elements")
print(my_series)
print("Accessing elements using customized index")
print(my_series['mm'])

실행 결과

The series contains following elements
ab  34
mn  56
gh  78
kl  90
wq  123
az  45
dtype: int64
Accessing elements using customized index
Traceback (most recent call last):
KeyError: 'mm'

코드 설명

  • 필요한 라이브러리를 임포트하고, 사용 편의성을 위해 별칭(alias)을 지정합니다.

  • 데이터 값으로 구성된 리스트를 생성한 뒤, pandas 라이브러리의 'Series' 함수에 매개변수로 전달합니다.

  • 사용자 지정 인덱스 값들을 별도의 리스트에 저장해 둡니다.

  • 시리즈를 생성하면서 데이터 리스트와 인덱스 리스트를 매개변수로 함께 전달합니다.

  • 생성된 시리즈를 콘솔에 출력합니다.

  • 인덱스 값이 사용자 지정되었으므로 series_name['index_name'] 형태로 시리즈의 값에 접근합니다.

  • 'mm'이라는 인덱스를 시리즈에서 찾지만 존재하지 않아 'KeyError'가 발생합니다.

  • 발생한 오류 메시지가 콘솔에 출력됩니다.

KeyError를 피하는 방법

존재하지 않는 인덱스에 접근할 때 프로그램이 중단되는 것을 원하지 않는다면 몇 가지 대안이 있습니다.

1. in 연산자로 사전 확인

if 'mm' in my_series:
    print(my_series['mm'])
else:
    print("해당 인덱스가 존재하지 않습니다.")

2. get() 메서드 활용

Series 객체의 .get() 메서드를 사용하면 인덱스가 없어도 오류 대신 기본값(None 또는 지정한 값)을 반환합니다.

print(my_series.get('mm'))       # None 출력
print(my_series.get('mm', 0))    # 기본값 0 출력

이처럼 인덱스 존재 여부를 미리 검사하거나 .get() 메서드를 활용하면, 잘못된 키 접근으로 인한 프로그램 비정상 종료를 효과적으로 방지할 수 있습니다.