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

파이썬으로 DataFrame에서 임의의 홀수 인덱스 행을 선택하는 방법

데이터 분석 작업을 하다 보면 데이터프레임에서 특정 조건에 맞는 행을 무작위로 추출해야 하는 경우가 종종 있습니다. 이번 글에서는 pandas DataFrame에서 홀수 인덱스에 해당하는 행 중 하나를 무작위로 선택하는 파이썬 프로그램을 단계별로 살펴보겠습니다.

문제 정의

가령 다음과 같은 데이터프레임이 있다고 가정해 보겠습니다.

DataFrame is:
 id mark age
0 1 70   12
1 2 60   13
2 3 40   12
3 4 50   13
4 5 80   12
5 6 90   13
6 7 60   12

여기서 홀수 인덱스(1, 3, 5)에 해당하는 행 중 하나를 무작위로 선택하면 결과는 다음과 같습니다.

Random odd index row is:
 id     4
mark   50
age    13

해결 방법

이 문제는 아래 단계를 순서대로 따르면 해결할 수 있습니다.

  • 데이터프레임 정의 — pandas를 사용해 샘플 데이터프레임을 생성합니다.

  • 빈 리스트 생성 — 홀수 인덱스 값을 저장할 리스트를 준비합니다.

  • for 루프 작성 — 데이터프레임의 모든 인덱스에 접근하는 반복문을 만듭니다.

  • 홀수 판별 조건 추가 — 인덱스를 2로 나눈 나머지가 1인 경우, 해당 인덱스를 리스트에 추가합니다.

  • 무작위 값 추출 — random 모듈의 choice() 함수로 리스트에서 임의의 인덱스 하나를 선택합니다.

  • 행 출력 — iloc을 사용해 해당 인덱스의 행을 최종적으로 출력합니다.

핵심 코드 설명

먼저 데이터프레임의 모든 인덱스 값에 접근하는 반복문입니다.

for i in df.index.values:

다음으로 인덱스가 홀수인지 확인하고, 홀수라면 리스트에 추가하는 조건문입니다.

if(i%2==1):
l.append(i)

리스트에 모인 홀수 인덱스 중 하나를 무작위로 선택합니다.

random_index = rand.choice(l)

마지막으로 iloc을 사용해 선택된 위치 기반 인덱스에 해당하는 행을 출력합니다.

df.iloc[random_index]

전체 예제 코드

아래 전체 구현 예제를 통해 더 쉽게 이해할 수 있습니다.

import pandas as pd
import random as rand
df = pd.DataFrame({'id': [1,2,3,4,5,6,7],
                   'mark': [70,60,40,50,80,90,60],
                   'age':[12,13,12,13,12,13,12]
                   })
print("DataFrame is:\n",df)
l = []
for i in df.index.values:
    if(i%2==1):
        l.append(i)
random_index = rand.choice(l)
print("Random odd index row is: \n", df.iloc[random_index])

실행 결과

DataFrame is:
 id mark age
0 1 70   12
1 2 60   13
2 3 40   12
3 4 50   13
4 5 80   12
5 6 90   13
6 7 60   12
Random odd index row is:
 id     4
mark   50
age    13
Name: 3, dtype: int64

추가 팁

iloc은 위치 기반(position-based) 인덱싱을 수행하므로, 위 예제처럼 인덱스가 0부터 시작하는 정수일 때 특히 유용합니다. 만약 짝수 인덱스만 선택하고 싶다면 조건문을 i%2==0으로 변경하면 됩니다. 또한 실행할 때마다 결과가 달라질 수 있으며, 재현 가능한 결과가 필요하다면 rand.seed()로 시드 값을 고정하는 것도 좋은 방법입니다.