Pyspark.sql.DataFrame.selectExpr()
Kinukuha ng function na selectexpr() ang mga column/set ng mga expression at ibinabalik ang DataFrame batay sa mga tinukoy na expression/column. Maaaring tukuyin ang maraming expression sa function na ito na pinaghihiwalay ng kuwit. Upang ipakita ang DataFrame, maaari naming gamitin ang show()/collect() function.
Syntax:
pyspark_DataFrame_object.selectExpr('Mga Column'/'Mga Expression')
Dito, ang pyspark_DataFrame_object ay ang input ng PySpark DataFrame.
Scenario 1: Piliin ang Mga Column
Sa sitwasyong ito, makikita natin kung paano piliin ang mga partikular na column mula sa PySpark DataFrame gamit ang selectExpr() function.
Ang expression na ginamit ay 'umiiral na_haligi bilang bagong_pangalan'. Dito, ang existing_column ay ang pangalan ng column na nasa DataFrame at ito ay ipinapakita bilang new_name (Aliasing).
Halimbawa:
Gumawa ng PySpark DataFrame na pinangalanang 'agri_df' na may 5 row at column. Kunin ang mga column na “Soil_status” at “Soil_Type” bilang “STATUS” at “TYPE”.
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# data ng pagsasaka na may 5 row at 5 column
agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },
{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },
{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]
# lumikha ng dataframe mula sa data sa itaas
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Kunin ang Soil_status at Soil_Type bilang 'STATUS' at 'TYPE'.
agri_df.selectExpr( 'Katayuan_lupa bilang STATUS' , 'Uri_lupa bilang TYPE' ).show()
Output:
Scenario 2: Pagtukoy sa Mga Conditional Expression
Sa sitwasyong ito, makikita natin kung paano suriin ang mga kundisyon sa loob ng function na selectExpr().
Ang expression na ginamit ay 'existing_column operator value'. Dito, ang existing_column ay ang pangalan ng column na nasa DataFrame at inihahambing namin ang bawat value sa column na ito sa string/value.
Halimbawa 1:
Suriin kung ang bansa ay 'USA' o hindi. Ang equalto (=) operator ay ginagamit dito.
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# data ng pagsasaka na may 5 row at 5 column
agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },
{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },
{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]
# lumikha ng dataframe mula sa data sa itaas
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Suriin kung ang bansa ay 'USA' o hindi.
agri_df.selectExpr( 'Bansa = 'USA'' ).show()
Output:
Halimbawa 2:
Suriin kung ang Soil_Type ay NULL o hindi. Ang NULL keyword ay nagsusuri kung ang halaga ay NULL o hindi. Kung ito ay null, true ang ibinalik. Kung hindi, ibabalik ang false. Ang huling expression ay 'Soil_Type IS NULL'
import pysparkmula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# data ng pagsasaka na may 5 row at 5 column
agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },
{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },
{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]
# lumikha ng dataframe mula sa data sa itaas
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Suriin kung ang Soil_Type ay NULL o hindi.
agri_df.selectExpr( 'Uri_ng_lupa AY NULL' ).show()
Output:
Sitwasyon 3: Pagsusuri sa mga Ekspresyon
Sa sitwasyong ito, makikita natin kung paano tukuyin ang mga mathematical expression. Ang expression na ginamit ay 'existing_column mathematical_expression'.
Halimbawa:
- Ipakita ang aktwal na column na 'Acres'.
- Magdagdag ng 100 sa column na 'Acres'.
- Magbawas ng 100 sa column na “Acres”.
- I-multiply ang 100 gamit ang column na 'Acres'.
- Hatiin ang column na 'Acres' sa 100.
mula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# data ng pagsasaka na may 5 row at 5 column
agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },
{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },
{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]
# lumikha ng dataframe mula sa data sa itaas
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Sumulat ng 4 na Ekspresyon upang ibawas, idagdag, hatiin at i-multiply ang hanay ng Acres.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).show()
Output:
Sitwasyon 4: Paglalapat ng Pinagsama-samang Mga Function
SUM(column_name) – Sinusuri nito ang kabuuang halaga sa tinukoy na column.
MEAN(column_name) – Sinusuri nito ang average na halaga sa tinukoy na column.
MIN(column_name) – Ibinabalik nito ang pinakamababang elemento sa lahat ng elemento sa tinukoy na column.
MAX(column_name) – Ibinabalik nito ang pinakamataas na elemento sa lahat ng elemento sa tinukoy na column.
Halimbawa:
- Hanapin ang kabuuan, average, bilang, minimum, at maximum na mga elemento ng 'Acres'.
- Hanapin ang minimum at maximum na mga elemento sa column na 'Soil_status'.
mula sa pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# data ng pagsasaka na may 5 row at 5 column
agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },
{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },
{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },
{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]
# lumikha ng dataframe mula sa data sa itaas
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Pinagsama-samang operasyon
agri_df.selectExpr( 'SUM(Acres)' , 'MEAN(Acres)' , 'COUNT(Acres)' , 'AVG(Acres)' , 'MIN(Acres)' ,
'MAX(Acres)' ).show()
agri_df.selectExpr( 'MIN(Soil_status)' , 'MAX(Soil_status)' ).show()
Output:
Konklusyon
Tinalakay namin ang tungkol sa function na selectExpr() na kumukuha ng mga column/set ng mga expression at ibinabalik ang DataFrame batay sa mga tinukoy na expression/column. Bilang bahagi nito, natutunan namin ang apat na pangunahing senaryo kung saan naaangkop ang selectExpr(). Maaaring tukuyin ang maraming expression sa function na ito na pinaghihiwalay ng kuwit. Hindi na kailangang gumawa ng PANSAMANTALA TINGIN para magamit ang function na selectExpr().