Skip to content

PySpark 데이터프레임 열을 Python 리스트로 변환하는 방법

PySpark 데이터프레임을 사용하는 경우 데이터 프레임에서 열을 추출하여 Python 리스트로 사용해야 할 때가 있습니다. 이 글에서는 PySpark 데이터프레임 열을 Python 리스트로 추출하는 다양한 방법을 살펴보겠습니다. 먼저 PySpark 데이터프레임의 기본 사항을 알아보고 열을 추출하는 여러 가지 방법으로 들어가 보겠습니다.

파이썬 판다스 데이터프레임에서 쉽게 데이터 시각화를 만들고 싶은가요?

PyGWalker는 시각화를 위한 파이썬 라이브러리입니다. PyGWalker (opens in a new tab)는 pandas dataframe(및 polars dataframe)를 Tableau 스타일의 시각적 탐색을 위한 인터페이스로 전환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 워크플로우를 단순화할 수 있습니다.

PyGWalker를 사용하여 데이터 시각화하기 (opens in a new tab)

PySpark 데이터프레임 소개

데이터프레임은 이름이 지정된 열로 구성된 분산 데이터 컬렉션입니다. 관계형 데이터베이스의 테이블 또는 R 또는 Python에서의 데이터프레임과 개념적으로 동일합니다. PySpark 데이터프레임은 스키마를 가진 행의 Resilient Distributed Dataset(RDD)입니다. PySpark SQL은 Spark를 사용하여 구조화된 데이터를 작업하는 프로그래밍 인터페이스를 제공합니다. PySpark는 CSV, JSON, Avro, Parquet 등 대부분의 일반적인 데이터 소스를 지원합니다.

더 잘 이해하기 위해 간단한 PySpark 데이터프레임을 만들고 PySpark SQL을 사용하여 스키마를 확인해 보겠습니다.

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
 
# SparkSession 생성
spark = SparkSession.builder.appName("PySpark_Examples").getOrCreate()
 
# 스키마 정의
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True)])
 
# 데이터프레임 생성
data = [(1,"John"),(2,"Mary"),(3,"Smith"),(4,"James")]
df = spark.createDataFrame(data, schema=schema)
 
# 데이터프레임 출력
df.show()

출력은 다음과 같습니다:

+---+-----+
| id| name|
+---+-----+
|  1| John|
|  2| Mary|
|  3|Smith|
|  4|James|
+---+-----+

단일 열을 리스트로 추출

PySpark 데이터 프레임에서 열을 추출하는 방법은 여러 가지가 있습니다. 이번 섹션에서는 그 중 몇 가지를 살펴보겠습니다.

방법 1: Collect 함수 사용

PySpark의 collect() 함수는 RDD(Resilient Distributed Datasets)의 모든 요소를 배열로 드라이버 프로그램으로 반환하는 데 사용됩니다. collect()를 사용하여 PySpark 데이터 프레임 열을 Python 리스트로 변환할 수 있습니다. 다음과 같이 수행할 수 있습니다.

# collect() 함수를 사용하여 name 열 추출
name_list = df.select('name').rdd.flatMap(lambda x: x).collect()
 
# 리스트 출력
print(name_list)

출력은 다음과 같습니다.

[u'John', u'Mary', u'Smith', u'James']

여기서는 select() 함수를 사용하여 데이터 프레임에서 "name" 열을 선택했습니다. 그런 다음 rdd.flatMap(lambda x: x)를 사용하여 열을 RDD로 변환한 다음 RDD의 collect() 함수를 사용하여 데이터를 Python 리스트 형태로 가져왔습니다.

방법 2: 리스트 내장 사용

Python 리스트로 PySpark 데이터 프레임에서 열을 추출하는 또 다른 방법은 리스트 내장을 사용하는 것입니다. 다음과 같이 수행할 수 있습니다.

# 리스트 내장을 사용하여 name 열 추출
name_list = [row.name for row in df.select('name').collect()]
 
# 리스트 출력
print(name_list)

출력은 다음과 같습니다.

[u'John', u'Mary', u'Smith', u'James']

여기서는 리스트 내장을 사용하여 데이터 프레임에서 "name" 열을 Python 리스트로 추출했습니다. 먼저 select() 함수를 사용하여 열을 추출한 다음 collect() 함수를 사용하여 데이터를 드라이버로 가져왔습니다.

방법 3: toPandas() 함수 사용

toPandas() 함수를 사용하여 PySpark 데이터 프레임에서 열을 Python 리스트로 추출할 수도 있습니다. 그러나 이 방법은 대형 데이터 프레임에서는 권장되지 않으며, 메모리 부족 오류가 발생할 수 있습니다. 다음과 같이 수행할 수 있습니다.

# toPandas() 함수를 사용하여 name 열 추출
name_list = df.select('name').toPandas()['name'].tolist()
 
# 리스트 출력
print(name_list)

출력은 다음과 같습니다.

여기서는 select() 함수를 사용하여 데이터 프레임에서 "name" 열을 선택한 후, 데이터 프레임을 Pandas 데이터 프레임으로 변환하는 toPandas() 함수를 사용했습니다. 마지막으로 tolist() 함수를 사용하여 Pandas 시리즈를 파이썬 리스트로 변환했습니다.

결론

이 글에서는 collect() 함수, 리스트 내포 및 toPandas() 함수와 같은 여러 가지 방법을 살펴보면서 PySpark 데이터 프레임 열을 파이썬 리스트로 추출하는 방법을 탐구했습니다. PySpark는 클러스터 내 여러 노드에 작업을 분산시켜 대용량 데이터셋을 병렬로 처리하는 효율적인 방법을 제공합니다. PySpark 데이터 프레임을 이해하고 그 중에서 데이터를 추출하는 방법은 대용량 데이터셋을 다루는 데이터 과학자나 엔지니어에게 귀중한 기술입니다.

이 글이 도움이 되었기를 바라며, 이제 PySpark 데이터프레임 열을 파이썬 리스트로 추출하는 방법을 알게 되셨으면 좋겠습니다. PySpark와 Pandas에 대해 더 알아보려면 다른 튜토리얼을 확인해보세요.


링크: