Преобразование PySpark DataFrame в CSV

Preobrazovanie Pyspark Dataframe V Csv



Давайте рассмотрим четыре различных сценария преобразования PySpark DataFrame в CSV. Непосредственно мы используем метод write.csv() для преобразования PySpark DataFrame в CSV. Используя функцию to_csv(), мы конвертируем PySpark Pandas DataFrame в CSV. Это также возможно путем преобразования его в массив NumPy.

Тема содержания:

Если вы хотите узнать об установке PySpark DataFrame и модуля, пройдите этот статья .







PySpark DataFrame в CSV путем преобразования в Pandas DataFrame

to_csv() — это метод, доступный в модуле Pandas, который преобразует DataFrame Pandas в CSV. Во-первых, нам нужно преобразовать наш PySpark DataFrame в Pandas DataFrame. Для этого используется метод toPandas(). Давайте посмотрим на синтаксис to_csv() вместе с его параметрами.



Синтаксис:



pandas_dataframe_obj.to_csv (путь/ 'имя_файла.csv' , заголовок ,индекс,столбцы,режим...)
  1. Нам нужно указать имя файла CSV-файла. Если вы хотите сохранить загруженный файл CSV в определенном месте на вашем ПК, вы также можете указать путь вместе с именем файла.
  2. Столбцы включаются, если для заголовка установлено значение «Истина». Если вам не нужны столбцы, установите для заголовка значение «False».
  3. Индексы указываются, если для индекса установлено значение «Истина». Если вам не нужны индексы, установите для индекса значение «False».
  4. Параметр Columns принимает список имен столбцов, в котором мы можем указать, какие именно столбцы извлекаются в файл CSV.
  5. Мы можем добавлять записи в CSV, используя параметр режима. Append – для этого используется «a».

Пример 1: с параметрами заголовка и индекса

Создайте PySpark DataFrame «skills_df» с 3 строками и 4 столбцами. Преобразуйте этот DataFrame в CSV, сначала преобразовав его в Pandas DataFrame.





импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# данные навыков с 3 строками и 4 столбцами

навыки =[{ 'идентификатор' : 123 , 'человек' : 'Мед' , 'навык' : 'рисование' , 'приз' : 25000 },

{ 'идентификатор' : 112 , 'человек' : 'Муни' , 'навык' : 'танец' , 'приз' : 2000 г. },

{ 'идентификатор' : 153 , 'человек' : 'Туласи' , 'навык' : 'чтение' , 'приз' : 1200 }

]

# создаем кадр данных навыков из приведенных выше данных

skills_df = linuxhint_spark_app.createDataFrame(навыки)

skills_df.show()

# Конвертируем skills_df в pandas DataFrame

pandas_skills_df= skills_df.toPandas()

печать (pandas_skills_df)

# Преобразовать этот DataFrame в csv с заголовком и индексом

pandas_skills_df.to_csv( 'панды_skills1.csv' , заголовок = Истина, индекс = Истина)

Выход:



Мы видим, что PySpark DataFrame преобразуется в Pandas DataFrame. Посмотрим, преобразуется ли он в CSV с именами столбцов и индексами:

Пример 2: добавление данных в CSV

Создайте еще один PySpark DataFrame с 1 записью и добавьте его в CSV, созданный как часть нашего первого примера. Убедитесь, что нам нужно установить для заголовка значение «False» вместе с параметром режима. В противном случае имена столбцов также добавляются в виде строки.

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

навыки =[{ 'идентификатор' : 90 , 'человек' : 'Бхаргав' , 'навык' : 'чтение' , 'приз' : 12000 }

]

# создаем кадр данных навыков из приведенных выше данных

skills_df = linuxhint_spark_app.createDataFrame(навыки)

# Конвертируем skills_df в pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Добавьте этот DataFrame в файл pandas_skills1.csv

pandas_skills_df.to_csv( 'панды_skills1.csv' , режим = а , заголовок = Ложь)

Вывод CSV:

Мы видим, что в файл CSV добавлена ​​новая строка.

Пример 3: с параметром Columns

Давайте возьмем тот же DataFrame и конвертируем его в CSV с двумя столбцами: «человек» и «приз».

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# данные навыков с 3 строками и 4 столбцами

навыки =[{ 'идентификатор' : 123 , 'человек' : 'Мед' , 'навык' : 'рисование' , 'приз' : 25000 },

{ 'идентификатор' : 112 , 'человек' : 'Муни' , 'навык' : 'танец' , 'приз' : 2000 г. },

{ 'идентификатор' : 153 , 'человек' : 'Туласи' , 'навык' : 'чтение' , 'приз' : 1200 }

]

# создаем кадр данных навыков из приведенных выше данных

skills_df = linuxhint_spark_app.createDataFrame(навыки)

# Конвертируем skills_df в pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Преобразовать этот DataFrame в csv с определенными столбцами

pandas_skills_df.to_csv( 'панды_skills2.csv' , столбцы=[ 'человек' , 'приз' ])

Вывод CSV:

Мы видим, что в файле CSV существуют только столбцы «человек» и «приз».

PySpark Pandas DataFrame в CSV с использованием метода To_Csv()

to_csv() — это метод, доступный в модуле Pandas, который преобразует DataFrame Pandas в CSV. Во-первых, нам нужно преобразовать наш PySpark DataFrame в Pandas DataFrame. Для этого используется метод toPandas(). Давайте посмотрим на синтаксис to_csv() вместе с его параметрами:

Синтаксис:

pyspark_pandas_dataframe_obj.to_csv (путь/ 'имя_файла.csv' , заголовок ,индекс,столбцы,...)
  1. Нам нужно указать имя файла CSV-файла. Если вы хотите сохранить загруженный файл CSV в определенном месте на вашем ПК, вы также можете указать путь вместе с именем файла.
  2. Столбцы включаются, если для заголовка установлено значение «Истина». Если вам не нужны столбцы, установите для заголовка значение «False».
  3. Индексы указываются, если для индекса установлено значение «Истина». Если вам не нужны индексы, установите для индекса значение «False».
  4. Параметр columns принимает список имен столбцов, в котором мы можем указать, какие именно столбцы извлекаются в CSV-файл.

Пример 1: с параметром Columns

Создайте PySpark Pandas DataFrame с 3 столбцами и преобразуйте его в CSV, используя to_csv() со столбцами «человек» и «приз».

из pyspark импортировать панды

pyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})

печать (pyspark_pandas_dataframe)

# Преобразовать этот DataFrame в csv с определенными столбцами

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , столбцы=[ 'человек' , 'приз' ])

Выход:

Мы видим, что PySpark Pandas DataFrame преобразуется в CSV с двумя разделами. Каждый раздел содержит 2 записи. Кроме того, столбцы в CSV содержат только «человек» и «приз».

Файл раздела 1:

Файл раздела 2:

Пример 2: с параметром заголовка

Используйте предыдущий DataFrame и укажите параметр заголовка, установив для него значение «True».

из pyspark импортировать панды

pyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})

# Преобразовать этот DataFrame в csv с заголовком.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , заголовок = Верно)

Вывод CSV:

Мы видим, что PySpark Pandas DataFrame преобразуется в CSV с двумя разделами. Каждый раздел содержит 2 записи с именами столбцов.

Файл раздела 1:

Файл раздела 2:

PySpark Pandas DataFrame в CSV путем преобразования в массив NumPy

У нас есть возможность преобразовать PySpark Pandas DataFrame в CSV путем преобразования в массив Numpy. to_numpy() — это метод, доступный в модуле PySpark Pandas, который преобразует PySpark Pandas DataFrame в массив NumPy.

Синтаксис:

pyspark_pandas_dataframe_obj.to_numpy()

Он не будет принимать никаких параметров.

Использование метода Tofile()

После преобразования в массив NumPy мы можем использовать метод tofile() для преобразования NumPy в CSV. Здесь он сохраняет каждую запись в новой ячейке по столбцу в файле CSV.

Синтаксис:

array_obj.to_numpy (имя файла/путь, sep=’ ’)

Он принимает имя файла или путь CSV и разделитель.

Пример:

Создайте PySpark Pandas DataFrame с 3 столбцами и 4 записями и преобразуйте его в CSV, предварительно преобразовав в массив NumPy.

из pyspark импортировать панды

pyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})

# Преобразование вышеуказанного DataFrame в массив numpy

преобразовано = pyspark_pandas_dataframe.to_numpy()

печать (преобразование)

# Использование tofile()

конвертировано.в файл( 'converted1.csv' , сен = ',' )

Выход:

[[ 90 'Мед' 1 ]

[ 78 'Муни' 2 ]

[ 90 'сам' 3 ]

[ 57 'радха' 4 ]]

Мы видим, что PySpark Pandas DataFrame преобразуется в массив NumPy (12 значений). Если вы видите данные CSV, они сохраняют каждое значение ячейки в новом столбце.

PySpark DataFrame в CSV с использованием метода Write.Csv()

Метод write.csv() принимает в качестве параметра имя/путь файла, в котором нам нужно сохранить CSV-файл.

Синтаксис:

dataframe_object.coalesce( 1 ).write.csv( 'имя файла' )

На самом деле CSV сохраняется как разделы (более одного). Чтобы избавиться от этого, мы объединяем все разделенные файлы CSV в один. В этом сценарии мы используем функциюCoalesce(). Теперь мы можем видеть только один CSV-файл со всеми строками из PySpark DataFrame.

Пример:

Рассмотрим PySpark DataFrame с 4 записями, имеющими 4 столбца. Запишите этот DataFrame в CSV с помощью файла с именем «market_details».

импортировать pyspark

из pyspark.sql импортировать SparkSession

linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()

# рыночные данные с 4 строками и 4 столбцами

рынок =[{ 'm_id' : 'мз-001' , 'м_имя' : «Азбука» , 'м_город' : 'Дели' , 'm_state' : 'Дели' },

{ 'm_id' : 'мз-002' , 'м_имя' : 'XYZ' , 'м_город' : патна , 'm_state' : 'Лакхнау' },

{ 'm_id' : 'мз-003' , 'м_имя' : 'PQR' , 'м_город' : 'Флорида' , 'm_state' : 'один' },

{ 'm_id' : 'мз-004' , 'м_имя' : «Азбука» , 'м_город' : 'Дели' , 'm_state' : 'Лакхнау' }

]



# создаем рыночный фрейм данных из приведенных выше данных

market_df = linuxhint_spark_app.createDataFrame(рынок)

# Актуальные рыночные данные

market_df.show()

# запись.csv()

market_df.coalesce( 1 ).write.csv( 'маркет_детали' )

Выход:

Давайте проверим файл:

Откройте последний файл, чтобы увидеть записи.

Заключение

Мы изучили четыре различных сценария преобразования PySpark DataFrame в CSV на примерах с учетом различных параметров. Когда вы работаете с PySpark DataFrame, у вас есть два варианта преобразования этого DataFrame в CSV: один способ — использовать метод write(), а другой — использовать метод to_csv() путем преобразования в Pandas DataFrame. Если вы работаете с PySpark Pandas DataFrame, вы также можете использовать to_csv() и tofile() путем преобразования в массив NumPy.