프로그래밍/PySpark

[PySpark] round(반올림), ceil(올림), floor(내림) 함수로 소수점 자리까지 다루기

히또아빠 2023. 9. 15. 12:04

PySpark를 사용하여 DataFrame의 특정 컬럼을 반올림, 올림 또는 내림하는 방법은 round(), ceil(), floor() 함수를 사용한다. 

PySpark의 ceilfloor 함수는 기본적으로 특정 소수 자릿수에서 동작하지 않는다. 특정 소수 자릿수에서 올림 또는 내림을 수행하려면 먼저 원하는 소수 자릿수로 값을 곱한 다음, 올림 또는 내림한 후에 다시 나누는 방법을 사용해야 한다.

즉, 원하는 자릿수 만큼 곱해서 올림이나 내린 다음에 다시 자릿수 만큼 나눠주는 작업이 필요하다.

0.참고사항

from pyspark.sql.functions import expr

# DataFrame에서 "value" 컬럼을 소수점 둘째 자리로 올림
df = df.withColumn("ceiled_value", expr("ceil(value * 100) / 100"))
df.show()

1.반올림(round)

숫자를 반올림해서 가장 가까운 정수로 보여주는 함수로 , round(컬럼명, 보여줄 자릿수) 로 구성.

from pyspark.sql.functions import round

# DataFrame 생성
data = [(1.25,), (2.5,), (3.75,)]
df = spark.createDataFrame(data, ["value"])

# "value" 컬럼을 소수점 첫째 자리를 반올림 해서 정수로 보여줌
df = df.withColumn("rounded_value", round(df["value"]))
df.show()

+-----+-------------+
|value|rounded_value|
+-----+-------------+
| 1.25|            1|
|  2.5|            3|
| 3.75|            4|
+-----+-------------+

# "value" 컬럼을 소수점 둘째자리를 반올림 해서 첫 째자리까지 보여줌
df = df.withColumn("rounded_value", round(df["value"], 1))
df.show()

+-----+-------------+
|value|rounded_value|
+-----+-------------+
| 1.25|          1.3|
|  2.5|          2.5|
| 3.75|          3.8|
+-----+-------------+

2. 올림(ceil)

from pyspark.sql.functions import expr

# DataFrame 생성
data = [(1.25,), (2.5,), (3.75,)]
df = spark.createDataFrame(data, ["value"])

# "value" 컬럼을 소수점 첫째 자리를 올림
df = df.withColumn("ceiled_value", expr("ceil(value)"))
df.show()

+-----+------------+
|value|ceiled_value|
+-----+------------+
| 1.25|           2|
|  2.5|           3|
| 3.75|           4|
+-----+------------+


#동일하게 작동함
from pyspark.sql.functions import ceil, col
df = df.withColumn("ceiled_value", ceil(col("value")))

3.내림(floor)

from pyspark.sql.functions import expr

# DataFrame 생성
data = [(1.25,), (2.5,), (3.75,)]
df = spark.createDataFrame(data, ["value"])

# "value" 컬럼을 소수점 첫째 자리로 내림
df = df.withColumn("floored_value", expr("floor(value)"))
df.show()

+-----+-------------+
|value|floored_value|
+-----+-------------+
| 1.25|            1|
|  2.5|            2|
| 3.75|            3|
+-----+-------------+
반올림 (round) 함수

round 함수는 주어진 숫자를 반올림하여 가장 가까운 정수를 반환합니다.
예제:
python
Copy code
from pyspark.sql.functions import round

# DataFrame 생성
data = [(1.25,), (2.5,), (3.75,)]
df = spark.createDataFrame(data, ["value"])

# "value" 컬럼을 소수점 첫째 자리로 반올림
df = df.withColumn("rounded_value", round(df["value"]))
df.show()

+-----+-------------+
|value|rounded_value|
+-----+-------------+
| 1.25|            1|
|  2.5|            2|
| 3.75|            4|
+-----+-------------+


#동일하게 작동함
from pyspark.sql.functions import floor, col
df = df.withColumn("ceiled_value", floor(col("value")))
300x250
반응형