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

파이썬으로 판다스 시리즈의 모든 요소 거듭제곱하여 출력하는 방법

데이터 분석을 하다 보면 시리즈(Series)에 담긴 모든 값을 각각 거듭제곱해야 하는 경우가 종종 있습니다. 예를 들어 각 요소를 자기 자신만큼 제곱한 값(x^x)을 계산하고 싶다면, 판다스에서 몇 가지 방법으로 손쉽게 처리할 수 있습니다.

문제 정의

입력값으로 다음과 같은 시리즈가 주어졌다고 가정해 보겠습니다.

입력

0    1
1    2
2    3
3    4

각 요소를 자기 자신의 값만큼 거듭제곱하면 결과는 아래와 같습니다.

출력

0      1
1      4
2     27
3    256

즉, 1^1 = 1, 2^2 = 4, 3^3 = 27, 4^4 = 256이 계산된 것입니다. 이제 이를 구현하는 세 가지 방법을 살펴보겠습니다.

방법 1: transform()과 람다 함수 활용

가장 파이써닉한 방법은 transform() 메서드와 람다(lambda) 함수를 조합하는 것입니다. 시리즈를 정의한 뒤, 각 요소 x에 대해 x**x를 반환하는 람다 함수를 적용하면 됩니다.

data.transform(lambda x: x**x)

예제 코드

import pandas as pd
l = [1, 2, 3, 4]
data = pd.Series(l)
print(data.transform(lambda x: x**x))

출력 결과

0      1
1      4
2     27
3    256

이 방법은 코드가 간결하고 가독성이 높아 실무에서 가장 널리 사용됩니다.

방법 2: 반복문과 math.pow() 활용

반복문을 직접 사용하는 전통적인 방식도 가능합니다. 절차는 다음과 같습니다.

  • 시리즈를 정의합니다.
  • 결과를 저장할 빈 리스트를 생성합니다.
  • for 반복문으로 시리즈의 모든 항목을 순회하면서 각 요소의 거듭제곱 값을 리스트에 추가합니다.
  • 마지막으로 리스트를 다시 시리즈로 변환합니다.
for i, j in data.items():
    ls.append(m.pow(j, j))

예제 코드

import pandas as pd
import math as m
l = [1, 2, 3, 4]
data = pd.Series(l)
ls = []
for i, j in data.items():
    ls.append(m.pow(j, j))
result = pd.Series(ls)
print(result)

출력 결과

0      1.0
1      4.0
2     27.0
3    256.0

math.pow()는 항상 부동소수점(float) 타입을 반환하기 때문에 출력 결과가 1.0, 4.0처럼 소수점 형태로 표시되는 점에 유의하세요.

마무리

정리하면, 시리즈의 모든 요소를 거듭제곱하는 방법은 크게 두 가지입니다. transform(lambda x: x**x)를 사용하면 정수형 결과를 그대로 유지하면서 코드도 깔끔하게 작성할 수 있고, math.pow()와 반복문을 사용하면 연산 과정을 단계별로 명확히 제어할 수 있습니다. 대용량 데이터를 다룰 때는 벡터화된 transform 방식이 성능 면에서 더 유리하므로, 특별한 이유가 없다면 첫 번째 방법을 권장합니다.