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

파이썬으로 시리즈에서 가장 많이 반복되는 요소 찾는 프로그램 작성하기

데이터 분석을 하다 보면 시리즈(Series) 안에서 가장 자주 등장하는 값, 즉 최빈값을 찾아야 하는 경우가 종종 있습니다. 이 글에서는 파이썬(Python)의 판다스(pandas) 라이브러리를 활용해 시리즈에서 가장 많이 반복되는 요소를 찾는 프로그램을 단계별로 작성해 보겠습니다.

문제 정의

예를 들어 다음과 같은 시리즈가 있다고 가정해 보겠습니다.

Series is:
0     1
1     22
2     3
3     4
4     22
5     5
6     22

여기서 가장 많이 반복되는 요소를 찾으면 결과는 다음과 같습니다.

Repeated element is: 22

해결 방법

이 문제는 아래와 같은 절차로 해결할 수 있습니다.

  • 먼저 시리즈를 정의합니다.

  • 초기 카운트(count)를 0으로 설정하고, max_count 값은 시리즈의 첫 번째 요소인 data[0]으로 지정합니다.

count = 0
max_count = data[0]
  • for 반복문으로 시리즈의 각 요소에 하나씩 접근하고, l.count(i)를 통해 해당 요소의 빈도수(frequency_count)를 계산합니다.

for i in data:
   frequency_count = l.count(i)
  • if 조건문으로 현재 요소의 빈도수가 max_count보다 큰지 비교합니다. 조건이 참이면 count에 frequency_count를 저장하고, max_count를 현재 요소로 갱신합니다. 반복이 끝나면 max_count를 출력하면 됩니다.

if(frequency_count > max_count):
   count = frequency_count
   max_count = i
print("Repeated element is:", max_count)

전체 예제 코드

지금까지의 과정을 하나로 합친 전체 구현 코드는 다음과 같습니다.

import pandas as pd
l = [1,22,3,4,22,5,22]
data = pd.Series(l)
print("Series is:\n", data)
count = 0
max_count = data[0]
for i in data:
   frequency_count = l.count(i)
   if(frequency_count > max_count):
      count = frequency_count
      max_count = i
print("Repeated element is:", max_count)

실행 결과

Series is:
0     1
1     22
2     3
3     4
4     22
5     5
6     22
dtype: int64
Repeated element is: 22

더 간단한 방법: value_counts()와 mode() 활용

반복문을 직접 작성하지 않고도 판다스의 내장 메서드를 사용하면 한 줄로 최빈값을 구할 수 있습니다.

import pandas as pd

l = [1, 22, 3, 4, 22, 5, 22]
data = pd.Series(l)

# value_counts()로 빈도수가 가장 높은 값 추출
repeated_element = data.value_counts().idxmax()
print("Repeated element is:", repeated_element)

# mode() 함수 활용
print("Repeated element is:", data.mode()[0])

value_counts()는 각 고유값의 등장 횟수를 내림차순으로 정렬한 시리즈를 반환하고, 여기에 idxmax()를 적용하면 빈도수가 가장 높은 값, 즉 최빈값을 바로 얻을 수 있습니다. mode() 함수 역시 최빈값을 반환하므로 상황에 맞게 선택해 사용하면 됩니다. 데이터 크기가 클수록 이런 내장 메서드를 활용하는 편이 코드 가독성과 실행 성능 면에서 모두 유리합니다.