En este artículo, vamos a aprender cómo dividir un PySpark DataFrame en dos filas. Cortar un DataFrame es obtener un subconjunto que contiene todas las filas de un índice a otro.
Método 1: usar las funciones limit() y rest()
En este método, primero hacemos un PySpark DataFrame con datos precodificados usando createDataFrame() . Luego usamos la función limit() para obtener un número particular de filas del DataFrame y almacenarlo en una nueva variable. La sintaxis de la función límite es:
Sintaxis : DataFrame.limit(num)
Devuelve : un marco de datos con número de filas.
Luego usaremos la función subtract() para obtener las filas restantes del DataFrame inicial. La sintaxis de la función restar es:
Sintaxis : DataFrame1.subtract (DataFrame2)
Devoluciones : un nuevo DataFrame que contiene filas en DataFrame1 pero no en DataFrame2.
Python
# Importing PySpark import pyspark from pyspark.sql import SparkSession # Session Creation Spark_Session = SparkSession.builder.appName( 'Spark Session' ).getOrCreate() # Data filled in our DataFrame rows = [['Lee Chong Wei', 69, 'Malaysia'], ['Lin Dan', 66, 'China'], ['Srikanth Kidambi', 9, 'India'], ['Kento Momota', 15, 'Japan']] # Columns of our DataFrame columns = ['Player', 'Titles', 'Country'] # DataFrame is created df = Spark_Session.createDataFrame(rows, columns) # Getting the slices # The first slice has 3 rows df1 = df.limit(3) # Getting the second slice by removing df1 # from df df2 = df.subtract(df1) # Printing the first slice df1.show() # Printing the second slice. df2.show()
Producción:
Método 2: Usando la función randomSplit()
En este método, primero crearemos un PySpark DataFrame usando createDataFrame() . Luego usaremos la función randomSplit() para obtener dos segmentos del DataFrame mientras especificamos las fracciones de filas que estarán presentes en ambos segmentos. Las filas se dividen ALEATORIAMENTE .
Sintaxis : DataFrame.randomSplit (pesos, semilla)
Parámetros :
- pesos: lista de valores dobles según los cuales se divide el DataFrame.
- seed : la semilla para el muestreo. Este parámetro es opcional.
Devoluciones : Lista de marcos de datos divididos
Python
# Importing PySpark import pyspark from pyspark.sql import SparkSession # Session Creation Spark_Session = SparkSession.builder.appName( 'Spark Session' ).getOrCreate() # Data filled in our DataFrame rows = [['Lee Chong Wei', 69, 'Malaysia'], ['Lin Dan', 66, 'China'], ['Srikanth Kidambi', 9, 'India'], ['Kento Momota', 15, 'Japan']] # Columns of our DataFrame columns = ['Player', 'Titles', 'Country'] #DataFrame is created df = Spark_Session.createDataFrame(rows, columns) # the first slice has 20% of the rows # the second slice has 80% of the rows # the data in both slices is selected randomly df1, df2 = df.randomSplit([0.20, 0.80]) # Showing the first slice df1.show() # Showing the second slice df2.show()
Producción:
Método 3: usar la función de recopilación()
En este método, primero crearemos un PySpark DataFrame usando createDataFrame() . Luego obtendremos una lista de objetos Row del DataFrame usando:
DataFrame.collect()
Luego usaremos el corte de lista de Python para obtener dos listas de filas. Finalmente, convertimos estas dos listas de filas en PySpark DataFrames usando createDataFrame() .
Python
# Importing PySpark and Pandas import pyspark from pyspark.sql import SparkSession import pandas as pd # Session Creation Spark_Session = SparkSession.builder.appName( 'Spark Session' ).getOrCreate() # Data filled in our DataFrame rows = [['Lee Chong Wei', 69, 'Malaysia'], ['Lin Dan', 66, 'China'], ['Srikanth Kidambi', 9, 'India'], ['Kento Momota', 15, 'Japan']] # Columns of our DataFrame columns = ['Player', 'Titles', 'Country'] #DataFrame is created df = Spark_Session.createDataFrame(rows, columns) # getting the list of Row objects row_list = df.collect() # Slicing the Python List part1 = row_list[:1] part2 = row_list[1:] # Converting the slices to PySpark DataFrames slice1 = Spark_Session.createDataFrame(part1) slice2 = Spark_Session.createDataFrame(part2) # Printing the first slice print('First DataFrame') slice1.show() # Printing the second slice print('Second DataFrame') slice2.show()
Producción:
Método 4: convertir PySpark DataFrame en Pandas DataFrame y usar iloc[] para cortar
En este método, primero crearemos un PySpark DataFrame usando createDataFrame() . Luego lo convertiremos en un Pandas DataFrame usando toPandas() . Luego cortamos el DataFrame usando iloc[] con la sintaxis:
DataFrame.iloc[start_index:end_index]
La fila en end_index NO está incluida. Finalmente, convertiremos nuestros segmentos de DataFrame en PySpark DataFrame usando createDataFrame()
Python
# Importing PySpark and Pandas import pyspark from pyspark.sql import SparkSession import pandas as pd # Session Creation Spark_Session = SparkSession.builder.appName( 'Spark Session' ).getOrCreate() # Data filled in our DataFrame rows = [['Lee Chong Wei', 69, 'Malaysia'], ['Lin Dan', 66, 'China'], ['Srikanth Kidambi', 9, 'India'], ['Kento Momota', 15, 'Japan']] # Columns of our DataFrame columns = ['Player', 'Titles', 'Country'] # DataFrame is created df = Spark_Session.createDataFrame(rows, columns) # Converting DataFrame to pandas pandas_df = df.toPandas() # First DataFrame formed by slicing df1 = pandas_df.iloc[:2] # Second DataFrame formed by slicing df2 = pandas_df.iloc[2:] # Converting the slices to PySpark DataFrames df1 = Spark_Session.createDataFrame(df1) df2 = Spark_Session.createDataFrame(df2) # Printing the first slice print('First DataFrame') df1.show() # Printing the second slice print('Second DataFrame') df2.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por pranavhfs1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA