Pyspark.sql.DataFrame.selectExpr()
Selectexpr()-funktio ottaa sarakkeet/lausekkeiden joukon ja palauttaa DataFramen määritettyjen lausekkeiden/sarakkeiden perusteella. Tässä funktiossa voidaan määrittää useita lausekkeita, jotka erotetaan pilkulla. DataFramen näyttämiseksi voimme käyttää show()/collect()-funktioita.
Syntaksi:
pyspark_DataFrame_object.selectExpr('Sarakkeet'/'Lausekkeet')
Tässä pyspark_DataFrame_object on syöte PySpark DataFrame.
Skenaario 1: Valitse sarakkeet
Tässä skenaariossa näemme, kuinka valitaan tietyt sarakkeet PySpark DataFrame -kehyksestä käyttämällä selectExpr()-funktiota.
Käytettävä lauseke on 'olemassa oleva_sarake uutena_niminä'. Tässä olemassa oleva_sarake on DataFrame-kehyksessä oleva sarakkeen nimi ja se näytetään muodossa new_name (aliasing).
Esimerkki:
Luo PySpark DataFrame nimeltä 'agri_df', jossa on 5 riviä ja saraketta. Hanki 'Soil_status'- ja 'Soil_Type'-sarakkeet arvoiksi 'STATUS' ja 'TYPE'.
tuonti pysparkpyspark.sql-tiedostosta tuo SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# viljelydataa 5 rivillä ja 5 sarakkeella
maatalouden =[{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 2500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 3500 , 'Soil_status' : 'Märkä' ,
'Maa' : 'Intia' },
{ 'Soil_Type' : Ei mitään , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 210 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'UK' },
{ 'Soil_Type' : 'muu' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 1000 , 'Soil_status' : 'Märkä' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Hiekka' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'Intia' }]
# luo datakehys yllä olevista tiedoista
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Hanki Soil_status ja Soil_Type arvoilla 'STATUS' ja 'TYPE'.
agri_df.selectExpr( 'Soil_status as STATUS' , 'Soil_Type as TYPE' ).näytä()
Lähtö:
Skenaario 2: Ehdollisten lausekkeiden määrittäminen
Tässä skenaariossa näemme, kuinka ehtoja voidaan arvioida selectExpr()-funktiossa.
Käytettävä lauseke on 'olemassa oleva_sarake-operaattorin arvo'. Tässä olemassa oleva_sarake on sarakkeen nimi, joka on DataFrame-kehyksessä, ja vertaamme tämän sarakkeen kutakin arvoa merkkijonoon/arvoon.
Esimerkki 1:
Tarkista, onko maa 'USA' vai ei. Tässä käytetään yhtälö (=) -operaattoria.
tuonti pysparkpyspark.sql-tiedostosta tuo SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# viljelydataa 5 rivillä ja 5 sarakkeella
maatalouden =[{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 2500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 3500 , 'Soil_status' : 'Märkä' ,
'Maa' : 'Intia' },
{ 'Soil_Type' : Ei mitään , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 210 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'UK' },
{ 'Soil_Type' : 'muu' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 1000 , 'Soil_status' : 'Märkä' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Hiekka' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'Intia' }]
# luo datakehys yllä olevista tiedoista
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Tarkista, onko maa 'USA' vai ei.
agri_df.selectExpr( 'Maa = 'USA' ).näytä()
Lähtö:
Esimerkki 2:
Tarkista, onko Soil_Type NULL vai ei. NULL-avainsana tarkistaa, onko arvo NULL vai ei. Jos se on nolla, palautetaan tosi. Muussa tapauksessa palautetaan false. Viimeinen lauseke on 'Soil_Type IS NULL'
tuonti pysparkpyspark.sql-tiedostosta tuo SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# viljelydataa 5 rivillä ja 5 sarakkeella
maatalouden =[{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 2500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 3500 , 'Soil_status' : 'Märkä' ,
'Maa' : 'Intia' },
{ 'Soil_Type' : Ei mitään , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 210 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'UK' },
{ 'Soil_Type' : 'muu' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 1000 , 'Soil_status' : 'Märkä' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Hiekka' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'Intia' }]
# luo datakehys yllä olevista tiedoista
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Tarkista, onko Soil_Type NULL vai ei.
agri_df.selectExpr( 'Soil_Type IS NULL' ).näytä()
Lähtö:
Skenaario 3: Lausekkeiden arviointi
Tässä skenaariossa näemme, kuinka matemaattiset lausekkeet määritetään. Käytetty lauseke on 'existing_column matemaattinen_lauseke'.
Esimerkki:
- Näytä todellinen 'Acres' sarake.
- Lisää 100 Acres-sarakkeeseen.
- Vähennä 100 Acres-sarakkeesta.
- Kerro 100 Acres-sarakkeella.
- Jaa Acres-sarake 100:lla.
pyspark.sql-tiedostosta tuo SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# viljelydataa 5 rivillä ja 5 sarakkeella
maatalouden =[{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 2500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 3500 , 'Soil_status' : 'Märkä' ,
'Maa' : 'Intia' },
{ 'Soil_Type' : Ei mitään , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 210 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'UK' },
{ 'Soil_Type' : 'muu' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 1000 , 'Soil_status' : 'Märkä' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Hiekka' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'Intia' }]
# luo datakehys yllä olevista tiedoista
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Kirjoita 4 lauseketta Acres-sarakkeen vähentämiseksi, lisäämiseksi, jakamiseksi ja kertomiseksi.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'eekkeriä * 100' , 'Acres + 100' , 'Acres / 100' ).näytä()
Lähtö:
Skenaario 4: Aggregaattifunktioiden käyttäminen
SUMMA(sarakkeen_nimi) – Se arvioi määritetyn sarakkeen kokonaisarvon.
MEAN(sarakkeen_nimi) – Se arvioi määritetyn sarakkeen keskiarvon.
MIN(sarakkeen_nimi) – Se palauttaa vähimmäiselementin määritetyn sarakkeen kaikkien elementtien joukosta.
MAX(sarakkeen_nimi) – Se palauttaa suurimman elementin kaikista määritetyn sarakkeen elementeistä.
Esimerkki:
- Etsi 'Acres' kokonais-, keskiarvo-, määrä-, minimi- ja enimmäiselementit.
- Etsi minimi- ja enimmäiselementit 'Soil_status' -sarakkeesta.
pyspark.sql-tiedostosta tuo SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# viljelydataa 5 rivillä ja 5 sarakkeella
maatalouden =[{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 2500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Musta' , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 3500 , 'Soil_status' : 'Märkä' ,
'Maa' : 'Intia' },
{ 'Soil_Type' : Ei mitään , 'Kastelun_saatavuus' : 'Joo' , 'Acres' : 210 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'UK' },
{ 'Soil_Type' : 'muu' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 1000 , 'Soil_status' : 'Märkä' ,
'Maa' : 'USA' },
{ 'Soil_Type' : 'Hiekka' , 'Kastelun_saatavuus' : 'Ei' , 'Acres' : 500 , 'Soil_status' : 'Kuiva' ,
'Maa' : 'Intia' }]
# luo datakehys yllä olevista tiedoista
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Kokoomatoiminnot
agri_df.selectExpr( 'SUMMA(Acres)' , 'KESKUS(Acres)' , 'COUNT(acres)' , 'AVG (Acres)' , 'MIN(Acres)' ,
'MAX (Acres)' ).näytä()
agri_df.selectExpr( 'MIN(maaperän tila)' , 'MAX(Soil_status)' ).näytä()
Lähtö:
Johtopäätös
Keskustelimme selectExpr()-funktiosta, joka ottaa sarakkeet/lausekkeiden joukot ja palauttaa DataFramen määritettyjen lausekkeiden/sarakkeiden perusteella. Osana tätä opimme neljä pääskenaariota, joissa selectExpr() on sovellettavissa. Tässä funktiossa voidaan määrittää useita lausekkeita, jotka erotetaan pilkulla. ValitseLaus()-funktion käyttämiseksi ei tarvitse luoda VÄLIAIKAISTA NÄKYMÄTTÄ.