pandas Series에서 홀수 인덱스에 해당하는 값들을 대문자 모음(A, E, I, O, U) 중 하나로 무작위 교체하는 파이썬 프로그램을 만들어 보겠습니다. 이런 기법은 데이터 마스킹이나 테스트용 더미 데이터 생성 등에 유용하게 활용할 수 있습니다.
입력 및 출력 예시
다음과 같은 Series가 있다고 가정해 보겠습니다.
0 1 1 2 2 3 3 4 4 5
여기서 홀수 인덱스(1번, 3번)의 값만 대문자 모음으로 교체하면 결과는 아래와 같습니다.
0 1 1 A 2 3 3 U 4 5
해결 방법
pd.Series()를 사용해 Series를 생성합니다.대문자 모음 문자열
"AEIOU"를 리스트 형태로 준비합니다.data.items()로 인덱스와 값을 순회하면서, 인덱스가 홀수인 경우random.choice()로 무작위 모음을 골라 해당 위치의 값을 교체합니다.
예제 코드
import pandas as pd
import random as r
# 원본 데이터로 Series 생성
data = pd.Series([1, 2, 3, 4, 5])
print("주어진 시리즈:\n", data)
# 대문자 모음 리스트 준비
vowels = list("AEIOU")
# 홀수 인덱스만 무작위 모음으로 교체
for i, j in data.items():
if i % 2 != 0:
data[i] = r.choice(vowels)
print("변경된 시리즈:\n", data)
실행 결과
주어진 시리즈: 0 1 1 2 2 3 3 4 4 5 dtype: int64 변경된 시리즈: 0 1 1 O 2 3 3 E 4 5 dtype: object
코드 설명
pd.Series([1, 2, 3, 4, 5]) : 리스트를 기반으로 인덱스 0~4를 가진 Series를 생성합니다.
list("AEIOU") : 문자열을 한 글자씩 분리해 ['A', 'E', 'I', 'O', 'U'] 리스트를 만듭니다.
data.items() : (인덱스, 값) 쌍을 반환하므로 인덱스 기반 조건 처리에 적합합니다.
i % 2 != 0 : 인덱스가 홀수인지 판별하는 조건식입니다.
r.choice(vowels) : 모음 리스트에서 매번 다른 문자를 무작위로 선택하므로, 실행할 때마다 결과가 달라질 수 있습니다.
참고로 문자열이 섞이면서 Series의 dtype이 int64에서 object로 자동 변경되는 점도 확인할 수 있습니다. 만약 특정 모음만 사용하고 싶다면 vowels 리스트의 구성 요소를 원하는 대로 수정하면 됩니다.