개요
이 글에서는 파이썬의 판다스(Pandas) 라이브러리를 사용하여, 주어진 시리즈(Series)에서 사용자가 입력한 인덱스에 해당하는 값이 알파벳인지 아니면 숫자인지 판별하는 프로그램을 작성해 보겠습니다.
문제 정의
먼저 다음과 같은 시리즈가 있다고 가정해 보겠습니다.
a abc b 123 c xyz d ijk
여기서 목표는 사용자로부터 인덱스를 입력받은 후, 해당 인덱스의 값이 숫자(digit)로만 구성되어 있는지 확인하고 그 결과를 출력하는 것입니다.
해결 접근 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
시리즈 정의: 딕셔너리 데이터를 기반으로 판다스 시리즈 객체를 생성합니다.
사용자 입력 받기: input() 함수를 사용하여 확인하고자 하는 인덱스를 입력받습니다.
숫자 여부 검사: 파이썬 문자열 메서드인 isdigit()을 활용해 조건문(if 문)으로 값을 검사합니다. isdigit()은 문자열이 숫자로만 이루어져 있으면 True를 반환합니다.
if(data[x].isdigit()):
print("digits present")
else:
print("not present")구현 예제 코드
아래는 위에서 설명한 로직을 실제로 구현한 전체 코드입니다.
import pandas as pd
dic = {'a':'abc','b':'123','c':'xyz','d':'ijk'}
data = pd.Series(dic)
x = input("enter the index : ")
if(data[x].isdigit()):
print("digits present")
else:
print("not present")코드 설명:
pandas 라이브러리를 pd라는 별칭으로 임포트합니다.
딕셔너리 dic의 키는 시리즈의 인덱스가 되고, 값은 각 요소의 데이터가 됩니다.
pd.Series(dic)를 호출하면 딕셔너리가 자동으로 시리즈 객체로 변환됩니다.
입력받은 인덱스 x로 data[x]에 접근한 뒤 isdigit() 메서드로 숫자 포함 여부를 판단합니다.
실행 결과
프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
enter the index : a not present enter the index : b digits present
인덱스 'a'의 값은 'abc'로 알파벳으로만 구성되어 있으므로 "not present"가 출력되고, 인덱스 'b'의 값은 '123'으로 숫자로만 구성되어 있으므로 "digits present"가 출력됩니다.
추가 팁: 알파벳 여부도 함께 확인하기
숫자뿐만 아니라 알파벳 여부까지 확인하고 싶다면 isalpha() 메서드를 함께 활용할 수 있습니다.
if(data[x].isdigit()):
print("digits present")
elif(data[x].isalpha()):
print("alphabets present")
else:
print("mixed or special characters")이렇게 하면 숫자, 알파벳, 그리고 혼합된 경우까지 세분화하여 판별할 수 있어 더욱 완성도 높은 프로그램이 됩니다.
마무리
이번 예제에서는 판다스 시리즈의 특정 인덱스 값에 대해 파이썬의 내장 문자열 메서드 isdigit()을 활용해 숫자 여부를 확인하는 방법을 살펴보았습니다. 이러한 기법은 데이터 유효성 검사나 데이터 클렌징 작업에서 유용하게 활용될 수 있습니다.