PySpark를 사용하여 DataFrame의 특정 컬럼을 반올림, 올림 또는 내림하는 방법은 round(), ceil(), floor() 함수를 사용한다.
PySpark의 ceil 및 floor 함수는 기본적으로 특정 소수 자릿수에서 동작하지 않는다. 특정 소수 자릿수에서 올림 또는 내림을 수행하려면 먼저 원하는 소수 자릿수로 값을 곱한 다음, 올림 또는 내림한 후에 다시 나누는 방법을 사용해야 한다.
즉, 원하는 자릿수 만큼 곱해서 올림이나 내린 다음에 다시 자릿수 만큼 나눠주는 작업이 필요하다.
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
반응형
'프로그래밍 > PySpark' 카테고리의 다른 글
[PySpark] 오버샘플링(oversampling), 언더샘플링(undersampling) (0) | 2023.09.18 |
---|---|
[PySpark] 특정(여러) 문자열(strings)이 포함된 데이터 필터로 뽑아내기. (0) | 2023.08.31 |
[PySpark] 학습된 로지스틱 모형의 계수 확인하기. (0) | 2023.08.25 |
[PySpark] array_intersect로 array간 같은 value값 찾기 (0) | 2023.08.21 |
[PySpark] Union(= unionAll) 함수로 두 데이터 프레임 합치기 (0) | 2023.07.11 |