>백엔드 개발 >파이썬 튜토리얼 >PySpark에서 벡터 데이터를 열로 분할하는 방법은 무엇입니까?

PySpark에서 벡터 데이터를 열로 분할하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 17:22:02876검색

How to Split Vector Data into Columns in PySpark?

PySpark에서 벡터 데이터를 열로 분할

벡터 데이터가 있는 "벡터" 열을 각각 하나씩 여러 열로 변환하는 문제 벡터의 차원은 데이터 분석 및 기계 학습에서 자주 발생합니다. 이 질문은 Apache PySpark의 맥락에서 이 문제를 다룹니다.

Spark를 사용한 추출 >= 3.0.0

Spark 버전 3.0.0 이상의 경우 단순화된 vector_to_array 함수를 사용하여 접근 방식을 사용할 수 있습니다.

<code class="python">from pyspark.ml.functions import vector_to_array

(df
 .withColumn("xs", vector_to_array("vector")))
 .select(["word"] + [col("xs")[i] for i in range(3)]))</code>

이렇게 하면 새 열이 생성됩니다. xs를 벡터 요소가 포함된 배열로 만듭니다.

Spark를 사용한 추출 < 3.0.0

3.0.0 이전 Spark 버전의 경우 다음 방법을 사용할 수 있습니다.

RDD로 변환 및 추출:

DataFrame을 RDD로 변환하고 벡터의 요소별 추출을 수행합니다. 값:

<code class="python">def extract(row):
    return (row.word, ) + tuple(row.vector.toArray().tolist())

df.rdd.map(extract).toDF(["word"])</code>

UDF 접근 방식:

사용자 정의 함수(UDF)를 정의하여 벡터 열을 배열로 변환:

<code class="python">from pyspark.sql.functions import udf, col
from pyspark.sql.types import ArrayType, DoubleType

def to_array(col):
    def to_array_(v):
        return v.toArray().tolist()
    return udf(to_array_, ArrayType(DoubleType())).asNondeterministic()(col)

(df
 .withColumn("xs", to_array(col("vector")))
 .select(["word"] + [col("xs")[i] for i in range(3)]))</code>

이 두 접근 방식 모두 벡터 요소를 별도의 열로 추출하여 추가 분석 및 사용이 가능합니다.

위 내용은 PySpark에서 벡터 데이터를 열로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.