Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

숫자 열 계산

아래 연산은 from pyspark.sql import functions as F로 가져옵니다. 숫자 열을 대상으로 Spark 표현식을 만들며, Python으로 전체 값을 가져와 계산할 필요가 없습니다.

반올림과 정수 경계

함수의미
F.bround(x, scale=0)HALF_EVEN 반올림. 정확한 중간값은 짝수 쪽으로 처리
F.round(x, scale=0)HALF_UP 반올림
F.ceil(x)올림
F.floor(x)내림
F.rint(x)가장 가까운 수학적 정수 값을 double로 반환

round/bround의 scale이 0 이상이면 소수 자리, 음수이면 정수부의 자릿수에서 반올림합니다. 예를 들어 scale 0의 HALF_EVEN에서 2.5는 2, HALF_UP에서는 3입니다.

로그와 지수

함수의미
F.log(x)자연로그
F.log(base, x)지정한 밑의 로그
F.log10(x)밑이 10인 로그
F.log1p(x)ln(1+x)
F.exp(x)e**x
F.expm1(x)e**x - 1

log의 인자가 둘이면 첫 번째가 밑이고 두 번째가 대상 열입니다.

난수

F.rand(seed=None)는 0 이상 1 미만인 균등분포의 독립 동일 분포 난수 열을 만듭니다. 1은 포함하지 않습니다. F.randn(seed=None)는 표준 정규분포의 난수 열을 만듭니다.

seed는 난수 생성에 사용합니다. 이 함수들은 일반적으로 비결정적이며 분산 행에 영구적인 업무 식별자를 부여하는 방법으로 사용하지 않습니다.

삼각함수와 각도

함수의미
F.cos(x), F.sin(x), F.tan(x)라디안 각도의 코사인, 사인, 탄젠트
F.acos(x)역코사인, 결과 범위 0~π
F.asin(x)역사인, 결과 범위 -π/2~π/2
F.atan(x)역탄젠트
F.atan2(y, x)직교좌표 (x,y)의 극각. 첫 인자는 y축, 둘째는 x축 좌표
F.cosh(x), F.sinh(x), F.tanh(x)쌍곡 코사인, 사인, 탄젠트
F.degrees(x)라디안을 도로 변환
F.radians(x)도를 라디안으로 변환

atan2의 인자 순서를 좌표 표기 (x,y)의 순서와 혼동하지 않습니다.

절댓값, 거듭제곱과 열별 극값

함수의미
F.abs(x)절댓값
F.cbrt(x)세제곱근
F.sqrt(x)제곱근
F.factorial(x)팩토리얼
F.pow(x, y)x의 y 거듭제곱
F.hypot(x, y)중간 제곱의 overflow/underflow를 피하며 sqrt(x*x+y*y) 계산
F.signum(x)부호 함수
F.greatest(*cols)여러 열 중 가장 큰 값, NULL 건너뜀
F.least(*cols)여러 열 중 가장 작은 값, NULL 건너뜀

다음 함수는 x/y 숫자 열과 amount 숫자 열을 받아 계산한 열을 반환합니다.

from pyspark.sql import functions as F


def numeric_features(df):
    return df.select(
        F.bround("amount", 2).alias("rounded_amount"),
        F.hypot("x", "y").alias("radius"),
        F.atan2("y", "x").alias("angle_radians"),
        F.pow("x", F.lit(2)).alias("x_squared"),
        F.greatest("x", "y").alias("larger_coordinate"),
    )