Spark 목록을 Pandas Dataframe으로 변환

Luqman Khan 2023년6월21일
  1. topandas() 메서드를 사용하여 Spark 목록을 Pandas Dataframe으로 변환
  2. parallelize() 함수를 사용하여 Spark 목록을 Python Pandas Dataframe으로 변환
  3. 결론
Spark 목록을 Pandas Dataframe으로 변환

이 문서에서는 Spark 행 목록을 Pandas 데이터 프레임으로 변환합니다.

topandas() 메서드를 사용하여 Spark 목록을 Pandas Dataframe으로 변환

createDataframe() 구문:

current_session.createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)

매개변수:

  • 데이터: 이 매개변수에는 SQL/MySQL 형식의 데이터 또는 데이터 세트가 포함됩니다.
  • 스키마: 데이터 프레임의 열 이름을 포함합니다.
  • sampling Ratio(float): 행의 비율입니다.
  • verify Schema(bool): 스키마의 데이터 유형을 확인하기 위한 부울 유형입니다.

위의 매개 변수는 Spark 데이터 프레임 개체를 반환합니다. 위 방법의 예는 다음과 같습니다.

먼저 이 함수를 사용하여 행 목록 데이터를 전달하고 스파크 데이터 프레임을 만듭니다. 그런 다음 PySpark 및 기타 관련 모듈을 가져옵니다.

암호:

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]

스파크 데이터 프레임을 생성하려면 createDataframe() 함수를 사용하십시오.

df = row_pandas_session.createDataFrame(row_object_list)

show() 함수를 사용하여 생성된 스파크 데이터 프레임을 표시합니다.

df.show()

출력:

+--------------------+----------+
|               Topic|Difficulty|
+--------------------+----------+
|    Machine Learning|        10|
|Artifical Intligence|         5|
|       Deep learning|         6|
|  Python Ptogramming|         7|
+--------------------+----------+

마지막으로 topandas() 함수를 사용하여 스파크 데이터 프레임을 Pandas 데이터 프레임으로 변환합니다. 그런 다음 Pandas 데이터 프레임을 인쇄합니다.

pandas_df = df.toPandas()
pandas_df

출력:

                  Topic  Difficulty
0      Machine Learning          10
1  Artifical Intligence           5
2         Deep learning           6
3    Python Ptogramming           7

전체 코드:

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]
df = row_pandas_session.createDataFrame(row_object_list)
df.show()
pandas_df = df.toPandas()
pandas_df

parallelize() 함수를 사용하여 Spark 목록을 Python Pandas Dataframe으로 변환

RDD를 생성하기 위해 parallelize() 기능을 사용합니다. 병렬화는 미리 정의된 컬렉션의 요소를 병렬 작업을 수행할 수 있는 분산 데이터 세트에 복사하는 것을 말합니다.

통사론:

sc.parallelize(data,numSlices)

어디:

  • sc: Spark 컨텍스트 개체

매개변수:

  • 데이터: 이것은 RDD를 위해 만들어진 데이터 또는 데이터 세트입니다.
  • numSlices: 파티션 수를 지정합니다. 선택적 매개변수입니다.

아래 코드는 이전 섹션과 동일합니다.

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]

이제 RDD를 사용하여 데이터 프레임을 만듭니다.

rdd = row_pandas_session.sparkContext.parallelize(row_object_list)
rdd

출력:

ParallelCollectionRDD[11] at readRDDFromFile at PythonRDD.scala:274

이제 아래와 같이 데이터 프레임을 생성합니다.

df = row_pandas_session.createDataFrame(rdd)
df.show()

출력:

+--------------------+----------+
|               Topic|Difficulty|
+--------------------+----------+
|    Machine Learning|        10|
|Artifical Intligence|         5|
|       Deep learning|         6|
|  Python Ptogramming|         7|
+--------------------+----------+

마지막으로 Pandas 데이터 프레임으로 변환합니다.

df2 = df.toPandas()
print(df2)

출력:

                  Topic  Difficulty
0      Machine Learning          10
1  Artifical Intligence           5
2         Deep learning           6
3    Python Ptogramming           7

결론

이 기사에서는 두 가지 방법을 사용했습니다. 먼저 createDataframe() 함수를 사용한 다음 topandas() 함수를 사용하여 Spark 목록을 Pandas 데이터 프레임으로 변환합니다.

우리가 사용한 두 번째 방법은 parallelize() 기능입니다. 이 방법에서는 먼저 이전과 동일한 기능을 사용하여 Spark 데이터 프레임을 만든 다음 RDD를 사용하여 병렬화하고 Spark 데이터 프레임을 만듭니다.

Spark 데이터 프레임은 topandas() 함수를 사용하여 Pandas 데이터 프레임으로 변환됩니다.

관련 문장 - Pandas Dataframe