Pyspark.sql.DataFrame.selectExpr()
Funkcija selectexpr() paima stulpelius / išraiškų rinkinį ir grąžina DataFrame pagal nurodytas išraiškas / stulpelius. Šioje funkcijoje galima nurodyti kelias išraiškas, kurios yra atskirtos kableliais. Norėdami parodyti DataFrame, galime naudoti show()/collect() funkcijas.
Sintaksė:
pyspark_DataFrame_object.selectExpr('Stulpeliai' / 'Išraiškos')
Čia pyspark_DataFrame_object yra įvestis PySpark DataFrame.
1 scenarijus: pasirinkite stulpelius
Šiame scenarijuje pamatysime, kaip pasirinkti konkrečius stulpelius iš PySpark DataFrame naudojant funkciją selectExpr ().
Naudojamas posakis yra „esamas_stulpelis kaip naujas_pavadinimas“. Čia esamas_stulpelis yra stulpelio pavadinimas, esantis DataFrame ir rodomas kaip naujas_pavadinimas (aliasing).
Pavyzdys:
Sukurkite PySpark DataFrame pavadinimu „agri_df“ su 5 eilutėmis ir stulpeliais. Gaukite stulpelius „Soil_status“ ir „Soil_Type“ kaip „STATUS“ ir „TYPE“.
importuoti pysparkiš pyspark.sql importuoti SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# ūkininkavimo duomenys su 5 eilutėmis ir 5 stulpeliais
agri =[{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 2500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 3500 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'Indija' },
{ 'Dirvožemio_tipas' : Nė vienas , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 210 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : „JK“ },
{ 'Dirvožemio_tipas' : 'Kita' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 1000 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'Smėlis' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'Indija' }]
# sukurkite duomenų rėmelį iš aukščiau pateiktų duomenų
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Gaukite „Soil_status“ ir „Soil_Type“ kaip „STATUS“ ir „TYPE“.
agri_df.selectExpr( 'Dirvožemio statusas kaip STATUSAS' , 'Soil_Type as TYPE' ).Rodyti()
Išvestis:
2 scenarijus: Sąlyginių išraiškų nurodymas
Šiame scenarijuje pamatysime, kaip įvertinti funkcijos selectExpr() sąlygas.
Naudojama išraiška yra „existing_column operator value“. Čia esamas_stulpelis yra stulpelio pavadinimas, esantis DataFrame, ir mes lyginame kiekvieną šio stulpelio reikšmę su eilute / reikšme.
1 pavyzdys:
Patikrinkite, ar šalis yra „JAV“, ar ne. Čia naudojamas operatorius equalto (=).
importuoti pysparkiš pyspark.sql importuoti SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# ūkininkavimo duomenys su 5 eilutėmis ir 5 stulpeliais
agri =[{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 2500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 3500 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'Indija' },
{ 'Dirvožemio_tipas' : Nė vienas , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 210 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : „JK“ },
{ 'Dirvožemio_tipas' : 'Kita' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 1000 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'Smėlis' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'Indija' }]
# sukurkite duomenų rėmelį iš aukščiau pateiktų duomenų
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Patikrinkite, ar šalis yra „JAV“, ar ne.
agri_df.selectExpr( „Šalis = „JAV“ ).Rodyti()
Išvestis:
2 pavyzdys:
Patikrinkite, ar „Soil_Type“ yra NULL, ar ne. NULL raktinis žodis patikrina, ar reikšmė yra NULL, ar ne. Jei jis yra nulis, grąžinama tiesa. Priešingu atveju grąžinama false. Galutinė išraiška yra „Soil_Type IS NULL“
importuoti pysparkiš pyspark.sql importuoti SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# ūkininkavimo duomenys su 5 eilutėmis ir 5 stulpeliais
agri =[{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 2500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 3500 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'Indija' },
{ 'Dirvožemio_tipas' : Nė vienas , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 210 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : „JK“ },
{ 'Dirvožemio_tipas' : 'Kita' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 1000 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'Smėlis' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'Indija' }]
# sukurkite duomenų rėmelį iš aukščiau pateiktų duomenų
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Patikrinkite, ar Soil_Type yra NULL, ar ne.
agri_df.selectExpr( 'Dirvožemio_tipas NULL' ).Rodyti()
Išvestis:
3 scenarijus: išraiškų įvertinimas
Šiame scenarijuje pamatysime, kaip nurodyti matematines išraiškas. Naudojama išraiška yra „esama_stulpelio matematinė_išraiška“.
Pavyzdys:
- Rodyti tikrąjį stulpelį „Acres“.
- Į stulpelį „Acres“ pridėkite 100.
- Iš stulpelio „Acres“ atimkite 100.
- Padauginkite 100 iš stulpelio „Acres“.
- Stulpelį „Acres“ padalinkite iš 100.
iš pyspark.sql importuoti SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# ūkininkavimo duomenys su 5 eilutėmis ir 5 stulpeliais
agri =[{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 2500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 3500 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'Indija' },
{ 'Dirvožemio_tipas' : Nė vienas , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 210 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : „JK“ },
{ 'Dirvožemio_tipas' : 'Kita' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 1000 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'Smėlis' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'Indija' }]
# sukurkite duomenų rėmelį iš aukščiau pateiktų duomenų
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Parašykite 4 išraiškas, kad atimtumėte, pridėtumėte, padalytumėte ir padaugintumėte Akrų stulpelį.
agri_df.selectExpr( 'Akrai' , 'Akrai - 100' , 'Akrų * 100' , 'Acres + 100' , 'Akrų / 100' ).Rodyti()
Išvestis:
4 scenarijus: Suvestinių funkcijų taikymas
SUM(stulpelio_pavadinimas) – Jis įvertina bendrą reikšmę nurodytame stulpelyje.
MEAN(stulpelio_pavadinimas) – Jis įvertina vidutinę reikšmę nurodytame stulpelyje.
MIN(stulpelio_pavadinimas) – Grąžina minimalų elementą tarp visų nurodyto stulpelio elementų.
MAX(stulpelio_pavadinimas) – Grąžina maksimalų elementą tarp visų nurodyto stulpelio elementų.
Pavyzdys:
- Raskite bendrą, vidurkį, skaičių, mažiausią ir didžiausią „Acres“ elementus.
- Stulpelyje „Soil_status“ raskite mažiausią ir didžiausią elementą.
iš pyspark.sql importuoti SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# ūkininkavimo duomenys su 5 eilutėmis ir 5 stulpeliais
agri =[{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 2500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'juoda' , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 3500 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'Indija' },
{ 'Dirvožemio_tipas' : Nė vienas , „Drėkinimo_prieinamumas“ : 'taip' , 'Acres' : 210 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : „JK“ },
{ 'Dirvožemio_tipas' : 'Kita' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 1000 , „Dirvožemio būklė“ : 'šlapias' ,
'Šalis' : 'JAV' },
{ 'Dirvožemio_tipas' : 'Smėlis' , „Drėkinimo_prieinamumas“ : 'ne' , 'Acres' : 500 , „Dirvožemio būklė“ : 'sausas' ,
'Šalis' : 'Indija' }]
# sukurkite duomenų rėmelį iš aukščiau pateiktų duomenų
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Suvestinės operacijos
agri_df.selectExpr( 'SUM (Acres)' , 'VIRTIS (Akrai)' , 'COUNT (Acres)' , 'AVG (Acres)' , 'MIN (Acres)' ,
'MAX (Acres)' ).Rodyti()
agri_df.selectExpr( 'MIN(Dirvožemio_būsena)' , 'MAX(Dirvožemio_būsena)' ).Rodyti()
Išvestis:
Išvada
Aptarėme funkciją selectExpr(), kuri paima stulpelius / išraiškų rinkinius ir grąžina DataFrame pagal nurodytas išraiškas / stulpelius. Vykdydami tai, sužinojome keturis pagrindinius scenarijus, kuriuose taikomas selectExpr(). Šioje funkcijoje galima nurodyti kelias išraiškas, kurios yra atskirtos kableliais. Norint naudoti funkciją selectExpr() nereikia kurti LAIKINO ROŽIO.