PySpark SelectExpr ()

Pyspark Selectexpr



Используя функцию selectExpr() в PySpark, мы можем напрямую оценить выражение, не создавая никаких таблиц или представлений. Эта функция доступна в модуле pyspark.sql.DataFrame, аналогичном методу select(). С помощью selectExpr() мы можем отображать столбцы, применять функции к столбцам, оценивать выражения, выполнять операции агрегирования и т. д. Также возможно оценивать/указывать несколько столбцов одновременно.

Pyspark.sql.DataFrame.selectExpr()

Функция selectexpr() принимает столбцы/набор выражений и возвращает DataFrame на основе указанных выражений/столбцов. В этой функции можно указать несколько выражений, разделенных запятой. Чтобы отобразить DataFrame, мы можем использовать функции show()/collect().

Синтаксис:







pyspark_DataFrame_object.selectExpr («Столбцы»/»Выражения»)

Здесь pyspark_DataFrame_object — это входной PySpark DataFrame.



Сценарий 1: выберите столбцы

В этом сценарии мы увидим, как выбрать определенные столбцы из фрейма данных PySpark с помощью функции selectExpr().



Используется выражение «existing_column as new_name». Здесь существующий_столбец — это имя столбца, которое присутствует в DataFrame и отображается как новое_имя (псевдоним).





Пример:

Создайте PySpark DataFrame с именем «agri_df» с 5 строками и столбцами. Получите столбцы «Soil_status» и «Soil_Type» как «STATUS» и «TYPE».

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

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

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

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

сельское хозяйство =[{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Нет' , 'Акры' : 2500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'США' },

{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Да' , 'Акры' : 3500 , 'Soil_status' : 'Влажный' ,
'Страна' : 'Индия' },

{ 'Тип_почвы' : Никто , «Ирригация_доступность» : 'Да' , 'Акры' : 210 , 'Soil_status' : 'Сухой' ,
'Страна' : 'ВЕЛИКОБРИТАНИЯ' },

{ 'Тип_почвы' : 'Другой' , «Ирригация_доступность» : 'Нет' , 'Акры' : 1000 , 'Soil_status' : 'Влажный' ,
'Страна' : 'США' },

{ 'Тип_почвы' : 'Песок' , «Ирригация_доступность» : 'Нет' , 'Акры' : 500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'Индия' }]



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

agri_df = linuxhint_spark_app.createDataFrame (агри)

# Получите Soil_status и Soil_Type как 'STATUS' и 'TYPE'.

agri_df.selectExpr( 'Soil_status как СТАТУС' , «Тип почвы как ТИП» ).показывать()

Выход:



Сценарий 2: Указание условных выражений

В этом сценарии мы увидим, как оценивать условия в функции selectExpr().

Используется выражение «значение оператора existing_column». Здесь существующий_столбец — это имя столбца, присутствующего в DataFrame, и мы сравниваем каждое значение в этом столбце со строкой/значением.

Пример 1:

Проверьте, является ли страна «США» или нет. Здесь используется оператор равенства (=).

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

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

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

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

сельское хозяйство =[{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Нет' , 'Акры' : 2500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'США' },

{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Да' , 'Акры' : 3500 , 'Soil_status' : 'Влажный' ,
'Страна' : 'Индия' },

{ 'Тип_почвы' : Никто , «Ирригация_доступность» : 'Да' , 'Акры' : 210 , 'Soil_status' : 'Сухой' ,
'Страна' : 'ВЕЛИКОБРИТАНИЯ' },

{ 'Тип_почвы' : 'Другой' , «Ирригация_доступность» : 'Нет' , 'Акры' : 1000 , 'Soil_status' : 'Влажный' ,
'Страна' : 'США' },

{ 'Тип_почвы' : 'Песок' , «Ирригация_доступность» : 'Нет' , 'Акры' : 500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'Индия' }]



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

agri_df = linuxhint_spark_app.createDataFrame (агри)

# Проверьте, является ли страна «США» или нет.

agri_df.selectExpr( 'Страна = 'США'' ).показывать()

Выход:

Пример 2:

Проверьте, является ли Soil_Type NULL или нет. Ключевое слово NULL проверяет, является ли значение NULL или нет. Если он равен нулю, возвращается true. В противном случае возвращается false. Окончательное выражение: «Soil_Type IS NULL».

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

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

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

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

сельское хозяйство =[{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Нет' , 'Акры' : 2500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'США' },

{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Да' , 'Акры' : 3500 , 'Soil_status' : 'Влажный' ,
'Страна' : 'Индия' },

{ 'Тип_почвы' : Никто , «Ирригация_доступность» : 'Да' , 'Акры' : 210 , 'Soil_status' : 'Сухой' ,
'Страна' : 'ВЕЛИКОБРИТАНИЯ' },

{ 'Тип_почвы' : 'Другой' , «Ирригация_доступность» : 'Нет' , 'Акры' : 1000 , 'Soil_status' : 'Влажный' ,
'Страна' : 'США' },

{ 'Тип_почвы' : 'Песок' , «Ирригация_доступность» : 'Нет' , 'Акры' : 500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'Индия' }]



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

agri_df = linuxhint_spark_app.createDataFrame (агри)

# Проверяем, является ли Soil_Type NULL или нет.

agri_df.selectExpr( «Тип_почвы имеет значение NULL» ).показывать()

Выход:

Сценарий 3: оценка выражений

В этом сценарии мы увидим, как задавать математические выражения. Используется выражение «existing_column математическое_выражение».

Пример:

  1. Отображение фактического столбца «Акры».
  2. Добавьте 100 в столбец «Акры».
  3. Вычтите 100 из столбца «Акры».
  4. Умножьте 100 на столбец «Акры».
  5. Разделите столбец «Акры» на 100.
импортировать pyspark

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

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

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

сельское хозяйство =[{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Нет' , 'Акры' : 2500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'США' },

{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Да' , 'Акры' : 3500 , 'Soil_status' : 'Влажный' ,
'Страна' : 'Индия' },

{ 'Тип_почвы' : Никто , «Ирригация_доступность» : 'Да' , 'Акры' : 210 , 'Soil_status' : 'Сухой' ,
'Страна' : 'ВЕЛИКОБРИТАНИЯ' },

{ 'Тип_почвы' : 'Другой' , «Ирригация_доступность» : 'Нет' , 'Акры' : 1000 , 'Soil_status' : 'Влажный' ,
'Страна' : 'США' },

{ 'Тип_почвы' : 'Песок' , «Ирригация_доступность» : 'Нет' , 'Акры' : 500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'Индия' }]



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

agri_df = linuxhint_spark_app.createDataFrame (агри)

# Напишите 4 выражения для вычитания, сложения, деления и умножения столбца акров.

agri_df.selectExpr( 'Акры' , 'Акров - 100' , 'Акры * 100' , «Акры + 100» , «Акров / 100» ).показывать()

Выход:

Сценарий 4: Применение агрегатных функций

СУММ(имя_столбца) – Он оценивает общее значение в указанном столбце.

СРЕДНЕЕ(имя_столбца) – Он оценивает среднее значение в указанном столбце.

МИН(имя_столбца) – Возвращает минимальный элемент среди всех элементов в указанном столбце.

МАКС(имя_столбца) – Возвращает максимальный элемент среди всех элементов в указанном столбце.

Пример:

  1. Найдите общее, среднее, количество, минимум и максимум элементов «Акров».
  2. Найдите минимальный и максимальный элементы в столбце «Soil_status».
импортировать pyspark

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

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

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

сельское хозяйство =[{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Нет' , 'Акры' : 2500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'США' },

{ 'Тип_почвы' : «Черный» , «Ирригация_доступность» : 'Да' , 'Акры' : 3500 , 'Soil_status' : 'Влажный' ,
'Страна' : 'Индия' },

{ 'Тип_почвы' : Никто , «Ирригация_доступность» : 'Да' , 'Акры' : 210 , 'Soil_status' : 'Сухой' ,
'Страна' : 'ВЕЛИКОБРИТАНИЯ' },

{ 'Тип_почвы' : 'Другой' , «Ирригация_доступность» : 'Нет' , 'Акры' : 1000 , 'Soil_status' : 'Влажный' ,
'Страна' : 'США' },

{ 'Тип_почвы' : 'Песок' , «Ирригация_доступность» : 'Нет' , 'Акры' : 500 , 'Soil_status' : 'Сухой' ,
'Страна' : 'Индия' }]



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

agri_df = linuxhint_spark_app.createDataFrame (агри)

# Агрегатные операции

agri_df.selectExpr( 'СУММА (акров)' , 'СРЕДНИЙ (акров)' , 'COUNT (акров)' , 'СРЕДНИЙ (акров)' , 'МИН (акров)' ,
'МАКС(акров)' ).показывать()

agri_df.selectExpr( 'МИН(Состояние_почвы)' , 'МАКС(состояние_почвы)' ).показывать()

Выход:

Заключение

Мы обсудили функцию selectExpr(), которая принимает столбцы/наборы выражений и возвращает DataFrame на основе указанных выражений/столбцов. В рамках этого мы изучили четыре основных сценария, в которых применим selectExpr(). В этой функции можно указать несколько выражений, разделенных запятой. Нет необходимости создавать ВРЕМЕННОЕ ПРЕДСТАВЛЕНИЕ для использования функции selectExpr().