PySpark DataFrame converteren naar CSV

Pyspark Dataframe Converteren Naar Csv



Laten we eens kijken naar de vier verschillende scenario's voor het converteren van het PySpark DataFrame naar CSV. Direct gebruiken we de methode write.csv() om het PySpark DataFrame naar CSV te converteren. Met behulp van de functie to_csv() converteren we het PySpark Pandas DataFrame naar CSV. Het kan ook mogelijk zijn door het te converteren naar de NumPy-array.

Onderwerp van de inhoud:

Als u meer wilt weten over PySpark DataFrame en module-installatie, gaat u hier doorheen artikel .







PySpark DataFrame naar CSV door te converteren naar Panda's DataFrame

De to_csv() is een methode die beschikbaar is in de Pandas-module die het Pandas DataFrame converteert naar CSV. Eerst moeten we onze PySpark DataFrame converteren naar Pandas DataFrame. Hiervoor wordt de methode toPandas() gebruikt. Laten we eens kijken naar de syntaxis van to_csv() samen met de bijbehorende parameters.



Syntaxis:



pandas_dataframe_obj.to_csv(pad/ 'bestandsnaam.csv' , koptekst ,index,kolommen,modus...)
  1. We moeten de bestandsnaam van het CSV-bestand specificeren. Als u de gedownloade CSV op een bepaalde locatie op uw pc wilt opslaan, kunt u ook het pad samen met de bestandsnaam opgeven.
  2. Kolommen worden opgenomen als de koptekst is ingesteld op 'True'. Als u geen kolommen nodig heeft, stelt u de koptekst in op 'False'.
  3. Indices worden opgegeven als de index is ingesteld op 'True'. Als u geen indexen nodig heeft, stelt u de index in op 'False'.
  4. Columns parameter neemt een lijst met kolomnamen waarin we kunnen specificeren welke specifieke kolommen worden geëxtraheerd naar het CSV-bestand.
  5. We kunnen de records toevoegen aan CSV met behulp van de modusparameter. Toevoegen - 'a' wordt gebruikt om dit te doen.

Voorbeeld 1: met de header- en indexparameters

Maak het 'skills_df' PySpark DataFrame met 3 rijen en 4 kolommen. Converteer dit DataFrame naar CSV door het eerst om te zetten in het Pandas DataFrame.





pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# vaardigheidsgegevens met 3 rijen en 4 kolommen

vaardigheden =[{ 'ID kaart' : 123 , 'persoon' : 'Honing' , 'vaardigheid' : 'schilderen' , 'prijs' : 25000 },

{ 'ID kaart' : 112 , 'persoon' : 'Mouni' , 'vaardigheid' : 'dans' , 'prijs' : 2000 },

{ 'ID kaart' : 153 , 'persoon' : 'Tulasi' , 'vaardigheid' : 'lezing' , 'prijs' : 1200 }

]

# maak het vaardigheidsdataframe van de bovenstaande gegevens

skills_df = linuxhint_spark_app.createDataFrame(vaardigheden)

skills_df.show()

# Converteer skills_df naar panda's DataFrame

pandas_skills_df=skills_df.toPandas()

print(pandas_skills_df)

# Converteer dit DataFrame naar csv met header en index

panda's_skills_df.to_csv( 'pandas_skills1.csv' , koptekst =Waar, index=Waar)

Uitgang:



We kunnen zien dat het PySpark DataFrame is geconverteerd naar Panda's DataFrame. Laten we eens kijken of het is geconverteerd naar CSV met kolomnamen en indexen:

Voorbeeld 2: voeg de gegevens toe aan CSV

Maak nog een PySpark DataFrame met 1 record en voeg dit toe aan CSV dat is gemaakt als onderdeel van ons eerste voorbeeld. Zorg ervoor dat we de koptekst moeten instellen op 'False' samen met de modusparameter. Anders worden de kolomnamen ook toegevoegd als een rij.

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

vaardigheden =[{ 'ID kaart' : 90 , 'persoon' : 'Bhargav' , 'vaardigheid' : 'lezing' , 'prijs' : 12000 }

]

# maak het vaardigheidsdataframe van de bovenstaande gegevens

skills_df = linuxhint_spark_app.createDataFrame(vaardigheden)

# Converteer skills_df naar panda's DataFrame

pandas_skills_df=skills_df.toPandas()

# Voeg dit DataFrame toe aan het bestand pandas_skills1.csv

panda's_skills_df.to_csv( 'pandas_skills1.csv' , modus= 'A' , koptekst =Onwaar)

CSV-uitvoer:

We kunnen zien dat er een nieuwe rij is toegevoegd aan het CSV-bestand.

Voorbeeld 3: met de kolommenparameter

Laten we hetzelfde DataFrame hebben en het omzetten in CSV met twee kolommen: 'persoon' en 'prijs'.

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# vaardigheidsgegevens met 3 rijen en 4 kolommen

vaardigheden =[{ 'ID kaart' : 123 , 'persoon' : 'Honing' , 'vaardigheid' : 'schilderen' , 'prijs' : 25000 },

{ 'ID kaart' : 112 , 'persoon' : 'Mouni' , 'vaardigheid' : 'dans' , 'prijs' : 2000 },

{ 'ID kaart' : 153 , 'persoon' : 'Tulasi' , 'vaardigheid' : 'lezing' , 'prijs' : 1200 }

]

# maak het vaardigheidsdataframe van de bovenstaande gegevens

skills_df = linuxhint_spark_app.createDataFrame(vaardigheden)

# Converteer skills_df naar panda's DataFrame

pandas_skills_df=skills_df.toPandas()

# Converteer dit DataFrame naar csv met specifieke kolommen

panda's_skills_df.to_csv( 'pandas_skills2.csv' , kolommen=[ 'persoon' , 'prijs' ])

CSV-uitvoer:

We kunnen zien dat alleen de kolommen 'persoon' en 'prijs' in het CSV-bestand voorkomen.

PySpark Panda's DataFrame naar CSV met behulp van de To_Csv()-methode

De to_csv() is een methode die beschikbaar is in de Pandas-module die het Pandas DataFrame converteert naar CSV. Eerst moeten we onze PySpark DataFrame converteren naar Pandas DataFrame. Hiervoor wordt de methode toPandas() gebruikt. Laten we eens kijken naar de syntaxis van to_csv() samen met zijn parameters:

Syntaxis:

pyspark_pandas_dataframe_obj.to_csv(pad/ 'bestandsnaam.csv' , koptekst ,index,kolommen,...)
  1. We moeten de bestandsnaam van het CSV-bestand specificeren. Als u de gedownloade CSV op een bepaalde locatie op uw pc wilt opslaan, kunt u ook het pad samen met de bestandsnaam opgeven.
  2. Kolommen worden opgenomen als de koptekst is ingesteld op 'True'. Als u geen kolommen nodig heeft, stelt u de koptekst in op 'False'.
  3. Indices worden opgegeven als de index is ingesteld op 'True'. Als u geen indexen nodig heeft, stelt u de index in op 'False'.
  4. De kolommenparameter neemt een lijst met kolomnamen waarin we kunnen specificeren welke specifieke kolommen naar het CSV-bestand worden geëxtraheerd.

Voorbeeld 1: met de kolommenparameter

Maak een PySpark Pandas DataFrame met 3 kolommen en converteer deze naar CSV met behulp van to_csv() met de kolommen 'person' en 'prize'.

van pyspark import panda's

pyspark_pandas_dataframe=pandas.DataFrame({ 'ID kaart' :[ 90 , 78 , 90 , 57 ], 'persoon' :[ 'Honing' , 'Mouni' , 'zichzelf' , 'radha' ], 'prijs' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# Converteer dit DataFrame naar csv met specifieke kolommen

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , kolommen=[ 'persoon' , 'prijs' ])

Uitgang:

We kunnen zien dat het PySpark Pandas DataFrame wordt geconverteerd naar CSV met twee partities. Elke partitie bevat 2 records. Ook zijn de kolommen in de CSV alleen 'persoon' en 'prijs'.

Partitiebestand 1:

Partitiebestand 2:

Voorbeeld 2: met de kopparameter

Gebruik het vorige DataFrame en geef de headerparameter op door deze in te stellen op 'True'.

van pyspark import panda's

pyspark_pandas_dataframe=pandas.DataFrame({ 'ID kaart' :[ 90 , 78 , 90 , 57 ], 'persoon' :[ 'Honing' , 'Mouni' , 'zichzelf' , 'radha' ], 'prijs' :[ 1 , 2 , 3 , 4 ]})

# Converteer dit DataFrame naar csv met header.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , koptekst =Waar)

CSV-uitvoer:

We kunnen zien dat het PySpark Pandas DataFrame wordt geconverteerd naar CSV met twee partities. Elke partitie bevat 2 records met kolomnamen.

Partitiebestand 1:

Partitiebestand 2:

PySpark Panda's DataFrame naar CSV door te converteren naar NumPy Array

We hebben een optie om het PySpark Pandas DataFrame naar CSV te converteren door het te converteren naar de Numpy-array. De to_numpy() is een methode die beschikbaar is in de PySpark Pandas-module die het PySpark Pandas DataFrame converteert naar de NumPy-array.

Syntaxis:

pyspark_pandas_dataframe_obj.to_numpy()

Er zijn geen parameters voor nodig.

De Tofile()-methode gebruiken

Na conversie naar de NumPy-array kunnen we de tofile() methode gebruiken om NumPy naar CSV te converteren. Hier slaat het elk record op in een nieuwe cel in kolomvorm in een CSV-bestand.

Syntaxis:

array_obj.to_numpy(bestandsnaam/pad,sep=’ ’)

Het heeft de bestandsnaam of het pad van een CSV en een scheidingsteken nodig.

Voorbeeld:

Maak PySpark Panda's DataFrame met 3 kolommen en 4 records en converteer het naar CSV door het eerst om te zetten in een NumPy-array.

van pyspark import panda's

pyspark_pandas_dataframe=pandas.DataFrame({ 'ID kaart' :[ 90 , 78 , 90 , 57 ], 'persoon' :[ 'Honing' , 'Mouni' , 'zichzelf' , 'radha' ], 'prijs' :[ 1 , 2 , 3 , 4 ]})

# Converteer het bovenstaande DataFrame naar een numpy-array

geconverteerd = pyspark_pandas_dataframe.to_numpy()

afdrukken (omgezet)

# tofile() gebruiken

geconverteerd.naarbestand( 'geconverteerd1.csv' , september = ',' )

Uitgang:

[[ 90 'Honing' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'zichzelf' 3 ]

[ 57 'radha' 4 ]]

We kunnen zien dat het PySpark Pandas DataFrame wordt geconverteerd naar een NumPy-array (12 waarden). Als u de CSV-gegevens kunt zien, wordt elke celwaarde in een nieuwe kolom opgeslagen.

PySpark DataFrame naar CSV met behulp van de Write.Csv()-methode

De methode write.csv() neemt de bestandsnaam/het pad waar we het CSV-bestand moeten opslaan als parameter.

Syntaxis:

dataframe_object.coalesce( 1 .schrijven.csv( 'bestandsnaam' )

Eigenlijk wordt de CSV opgeslagen als partities (meer dan één). Om hiervan af te komen, voegen we alle gepartitioneerde CSV-bestanden samen tot één. In dit scenario gebruiken we de functie coalesce(). Nu kunnen we slechts één CSV-bestand zien met alle rijen uit het PySpark DataFrame.

Voorbeeld:

Beschouw het PySpark DataFrame met 4 records met 4 kolommen. Schrijf dit DataFrame naar CSV met het bestand met de naam 'market_details'.

pyspark importeren

importeer vanuit pyspark.sql SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# marktgegevens met 4 rijen en 4 kolommen

markt =[{ 'm_id' : 'mz-001' , 'm_naam' : 'ABC' , 'm_stad' : 'Delhi' , 'm_staat' : 'Delhi' },

{ 'm_id' : 'mz-002' , 'm_name' : 'XYZ' , 'm_stad' : 'patna' , 'm_staat' : 'geluk' },

{ 'm_id' : 'mz-003' , 'm_name' : 'PQR' , 'm_stad' : 'Florida' , 'm_state' : 'een' },

{ 'm_id' : 'mz-004' , 'm_naam' : 'ABC' , 'm_stad' : 'Delhi' , 'm_staat' : 'geluk' }

]



# maak het marktdataframe van de bovenstaande gegevens

market_df = linuxhint_spark_app.createDataFrame(markt)

# Actuele marktgegevens

markt_df.show()

# schrijven.csv()

market_df.coalesce( 1 .schrijven.csv( 'markt_details' )

Uitgang:

Laten we het bestand controleren:

Open het laatste bestand om de records te zien.

Conclusie

We hebben de vier verschillende scenario's geleerd die het PySpark DataFrame naar CSV converteren met voorbeelden door rekening te houden met verschillende parameters. Wanneer u met het PySpark DataFrame werkt, heeft u twee opties om dit DataFrame naar CSV te converteren: op de ene manier gebruikt u de methode write() en op een andere manier gebruikt u de methode to_csv() door te converteren naar Panda's DataFrame. Als u met PySpark Panda's DataFrame werkt, kunt u ook de to_csv() en tofile() gebruiken door ze te converteren naar de NumPy-array.