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 математическое_выражение».
Пример:
- Отображение фактического столбца «Акры».
- Добавьте 100 в столбец «Акры».
- Вычтите 100 из столбца «Акры».
- Умножьте 100 на столбец «Акры».
- Разделите столбец «Акры» на 100.
из 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: Применение агрегатных функций
СУММ(имя_столбца) – Он оценивает общее значение в указанном столбце.
СРЕДНЕЕ(имя_столбца) – Он оценивает среднее значение в указанном столбце.
МИН(имя_столбца) – Возвращает минимальный элемент среди всех элементов в указанном столбце.
МАКС(имя_столбца) – Возвращает максимальный элемент среди всех элементов в указанном столбце.
Пример:
- Найдите общее, среднее, количество, минимум и максимум элементов «Акров».
- Найдите минимальный и максимальный элементы в столбце «Soil_status».
из 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().