여러 열에 대한 모드 계산

로버트 소신 스키

Spark에서 동시에 여러 열에 대한 모드를 계산하고이 계산 된 값을 사용하여 DataFrame의 누락을 대치하고 싶습니다. 예를 들어 평균을 계산하는 방법을 찾았지만 모드가 더 복잡하다고 생각합니다.

평균 계산은 다음과 같습니다.

val multiple_mean = df.na.fill(df.columns.zip(
  df.select(intVars.map(mean(_)): _*).first.toSeq
).toMap)

무차별 대입 방식으로 모드를 계산할 수 있습니다.

var list = ArrayBuffer.empty[Float]

for(column <- df.columns){
  list += df.select(column).groupBy(col(column)).count().orderBy(desc("count")).first.toSeq(0).asInstanceOf[Float]
}

val multiple_mode = df.na.fill(df.columns.zip(list.toSeq).toMap)

공연을 고려한다면 어떤 방법이 최선일까요?

도움을 주셔서 감사합니다.

이샤 르 아흐메드

UserDefinedAggregateFunction을 사용할 수 있습니다. 아래 코드는 spark 1.6.2에서 테스트되었습니다.

먼저 UserDefinedAggregateFunction을 확장하는 클래스를 만듭니다.

import org.apache.spark.sql.Row
import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}
import org.apache.spark.sql.types._

class ModeUDAF extends UserDefinedAggregateFunction{

  override def dataType: DataType = StringType

  override def inputSchema: StructType = new StructType().add("input", StringType)

  override def deterministic: Boolean = true

  override def bufferSchema: StructType = new StructType().add("mode", MapType(StringType, LongType))

  override def initialize(buffer: MutableAggregationBuffer): Unit = {
    buffer(0) = Map.empty[Any, Long]
  }

  override def update(buffer: MutableAggregationBuffer, input: Row): Unit = {
    val buff0 = buffer.getMap[Any, Long](0)
    val inp = input.get(0)
    buffer(0) = buff0.updated(inp, buff0.getOrElse(inp, 0L) + 1L)
  }

  override def merge(buffer1: MutableAggregationBuffer, buffer2: Row): Unit = {
    val mp1 = buffer1.getMap[Any, Long](0)
    val mp2 = buffer2.getMap[Any, Long](0)

    buffer1(0) = mp1 ++ mp2.map { case (k, v) => k -> (v + mp1.getOrElse(k, 0L)) }
  }

  override def evaluate(buffer: Row): Any = {
    lazy val st = buffer.getMap[Any, Long](0).toStream
    val mode = st.foldLeft(st.head){case (e, s) => if (s._2 > e._2) s else e}
    mode._1
  }

}

나중에 다음과 같은 방식으로 데이터 프레임과 함께 사용할 수 있습니다.

val modeColumnList = List("some", "column", "names") // or df.columns.toList
val modeAgg = new ModeUDAF()
val aggCols = modeColumnList.map(c => modeAgg(df(c)))
val aggregatedModeDF = df.agg(aggCols.head, aggCols.tail: _*)
aggregatedModeDF.show()

또한 최종 데이터 프레임에서 .collect를 사용하여 결과를 스칼라 데이터 구조로 수집 할 수 있습니다.

참고 :이 솔루션의 성능은 입력 열의 카디널리티에 따라 다릅니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

여러 행에 대한 값 계산

분류에서Dev

R의 여러 열에 대한 누적 합계 계산

분류에서Dev

여러 열에 대한 계산 및 여러 요인 수준별 집계 값

분류에서Dev

열에 대한 SAS 계산 키워드

분류에서Dev

Android : 여러 파일 업로드에 대한 진행률 계산 방법

분류에서Dev

카산드라의 여러 열에 대한 범위

분류에서Dev

Kotlin의 여러 문자 그룹에서 가능한 모든 문자열 계산

분류에서Dev

awk를 사용하여 모든 열에 대한 z 점수 계산

분류에서Dev

여러 요인에 대한 승산 비 계산

분류에서Dev

동일한 모델에 대한 has_many 관계, 여러 필드 이름

분류에서Dev

여러 관계에 대한 엔티티 계산 및 정렬

분류에서Dev

여러 드롭 다운에서 고유 한 선택 계산

분류에서Dev

PostgreSQL 여러 열을 사용하여 백분율에 대한 숫자 계산

분류에서Dev

여러 열에 대한 행 집계

분류에서Dev

R : data.frame의 모든 행에 대해 다른 여러 조건에서 새 열을 계산하는 방법에 대한 권장 사항

분류에서Dev

하나의 쿼리에서 여러 값에 대한 계산 계산

분류에서Dev

서로 다른 열에 대해 별개의 여러 열 계산

분류에서Dev

파이썬 배열, 모든 True에 대한 합계 계산

분류에서Dev

여러 정점에 대해 그래프 데이터베이스에서 가능한 모든 경로 계산

분류에서Dev

여러 열 옆에 계산

분류에서Dev

여러 열에서 계산

분류에서Dev

목록에서 여러 모드를 계산하는 Python

분류에서Dev

동시에 여러 변수에 대한 성장률 계산

분류에서Dev

R에서 여러 단어에 대한 단어 빈도 계산?

분류에서Dev

PHP 내에서 여러 문서에 대한 XML 요소 계산

분류에서Dev

다른 테이블 열 값에 대한 필드 합계 계산

분류에서Dev

pyspark를 사용하여 Dataframe의 모든 열에 대한 최대 날짜를 계산하는 방법

분류에서Dev

pyspark를 사용하여 Dataframe의 모든 열에 대한 최대 날짜를 계산하는 방법

분류에서Dev

여러 텐서에 대한 손실 값 계산

Related 관련 기사

  1. 1

    여러 행에 대한 값 계산

  2. 2

    R의 여러 열에 대한 누적 합계 계산

  3. 3

    여러 열에 대한 계산 및 여러 요인 수준별 집계 값

  4. 4

    열에 대한 SAS 계산 키워드

  5. 5

    Android : 여러 파일 업로드에 대한 진행률 계산 방법

  6. 6

    카산드라의 여러 열에 대한 범위

  7. 7

    Kotlin의 여러 문자 그룹에서 가능한 모든 문자열 계산

  8. 8

    awk를 사용하여 모든 열에 대한 z 점수 계산

  9. 9

    여러 요인에 대한 승산 비 계산

  10. 10

    동일한 모델에 대한 has_many 관계, 여러 필드 이름

  11. 11

    여러 관계에 대한 엔티티 계산 및 정렬

  12. 12

    여러 드롭 다운에서 고유 한 선택 계산

  13. 13

    PostgreSQL 여러 열을 사용하여 백분율에 대한 숫자 계산

  14. 14

    여러 열에 대한 행 집계

  15. 15

    R : data.frame의 모든 행에 대해 다른 여러 조건에서 새 열을 계산하는 방법에 대한 권장 사항

  16. 16

    하나의 쿼리에서 여러 값에 대한 계산 계산

  17. 17

    서로 다른 열에 대해 별개의 여러 열 계산

  18. 18

    파이썬 배열, 모든 True에 대한 합계 계산

  19. 19

    여러 정점에 대해 그래프 데이터베이스에서 가능한 모든 경로 계산

  20. 20

    여러 열 옆에 계산

  21. 21

    여러 열에서 계산

  22. 22

    목록에서 여러 모드를 계산하는 Python

  23. 23

    동시에 여러 변수에 대한 성장률 계산

  24. 24

    R에서 여러 단어에 대한 단어 빈도 계산?

  25. 25

    PHP 내에서 여러 문서에 대한 XML 요소 계산

  26. 26

    다른 테이블 열 값에 대한 필드 합계 계산

  27. 27

    pyspark를 사용하여 Dataframe의 모든 열에 대한 최대 날짜를 계산하는 방법

  28. 28

    pyspark를 사용하여 Dataframe의 모든 열에 대한 최대 날짜를 계산하는 방법

  29. 29

    여러 텐서에 대한 손실 값 계산

뜨겁다태그

보관