Pyspark.sql.DataFrame.selectExpr()
Функцията selectexpr() взема колоните/набора от изрази и връща DataFrame въз основа на посочените изрази/колони. В тази функция могат да бъдат посочени множество изрази, които са разделени със запетая. За да покажем DataFrame, можем да използваме функциите show()/collect().
Синтаксис:
pyspark_DataFrame_object.selectExpr(“Колони”/”Изрази”)
Тук обектът pyspark_DataFrame_object е входният PySpark DataFrame.
Сценарий 1: Изберете колоните
В този сценарий ще видим как да изберете конкретните колони от PySpark DataFrame с помощта на функцията selectExpr().
Изразът, който се използва е “existing_column as new_name”. Тук existing_column е името на колоната, което присъства в DataFrame и се показва като new_name (псевдоним).
Пример:
Създайте PySpark DataFrame с име „agri_df“ с 5 реда и колони. Вземете колоните „Soil_status“ и „Soil_Type“ като „STATUS“ и „TYPE“.
импортиране на pysparkот pyspark.sql импортирайте SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()
# данни за земеделие с 5 реда и 5 колони
агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },
{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },
{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]
# създайте рамката с данни от горните данни
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Вземете Soil_status и Soil_Type като 'STATUS' и 'TYPE'.
agri_df.selectExpr( „Състояние на почвата като СТАТУС“ , „Soil_Type като TYPE“ ).покажи()
Изход:
Сценарий 2: Указване на условните изрази
В този сценарий ще видим как да оценим условията във функцията selectExpr().
Изразът, който се използва, е “existing_column operator value”. Тук existing_column е името на колоната, което присъства в DataFrame и ние сравняваме всяка стойност в тази колона с низа/стойността.
Пример 1:
Проверете дали държавата е „САЩ“ или не. Тук се използва операторът equalto (=).
импортиране на pysparkот pyspark.sql импортирайте SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()
# данни за земеделие с 5 реда и 5 колони
агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },
{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },
{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]
# създайте рамката с данни от горните данни
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Проверете дали държавата е „САЩ“ или не.
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( „Linux Hint“ ).getOrCreate()
# данни за земеделие с 5 реда и 5 колони
агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },
{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },
{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]
# създайте рамката с данни от горните данни
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Проверете дали Soil_Type е NULL или не.
agri_df.selectExpr( „Soil_Type IS NULL“ ).покажи()
Изход:
Сценарий 3: Оценяване на изразите
В този сценарий ще видим как да посочим математическите изрази. Изразът, който се използва е „съществуваща_колона математически_израз“.
Пример:
- Покажете действителната колона „Акри“.
- Добавете 100 към колоната „Акра“.
- Извадете 100 от колоната „Акри“.
- Умножете 100 с колоната „Акри“.
- Разделете колоната „Акри“ на 100.
от pyspark.sql импортирайте SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()
# данни за земеделие с 5 реда и 5 колони
агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },
{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },
{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]
# създайте рамката с данни от горните данни
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Напишете 4 израза за изваждане, добавяне, деление и умножаване на колона Acres.
agri_df.selectExpr( 'акри' , 'Акра - 100' , 'Акра * 100' , 'Акра + 100' , 'Акра / 100' ).покажи()
Изход:
Сценарий 4: Прилагане на агрегатните функции
SUM(име_на_колона) – Оценява общата стойност в указаната колона.
MEAN(име_на_колона) – Оценява средната стойност в посочената колона.
MIN(име на_колона) – Връща минималния елемент сред всички елементи в указаната колона.
MAX(име_на_колона) – Връща максималния елемент сред всички елементи в указаната колона.
Пример:
- Намерете общия, средния, броя, минималния и максималния елемент на „акри“.
- Намерете минималните и максималните елементи в колоната „Състояние на почвата“.
от pyspark.sql импортирайте SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()
# данни за земеделие с 5 реда и 5 колони
агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },
{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },
{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },
{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]
# създайте рамката с данни от горните данни
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Агрегирани операции
agri_df.selectExpr( 'SUM (акра)' , 'СРЕДНО (акра)' , „COUNT(акра)“ , 'СРВ (акра)' , 'MIN (акра)' ,
'MAX (акра)' ).покажи()
agri_df.selectExpr( 'MIN(състояние_на_почвата)' , 'MAX(състояние_на_почвата)' ).покажи()
Изход:
Заключение
Обсъдихме функцията selectExpr(), която взема колоните/наборите от изрази и връща DataFrame въз основа на посочените изрази/колони. Като част от това научихме четирите основни сценария, в които selectExpr() е приложим. В тази функция могат да бъдат посочени множество изрази, които са разделени със запетая. Няма нужда да създавате ВРЕМЕНЕН ИЗГЛЕД, за да използвате функцията selectExpr().