PySpark SelectExpr()

Pyspark Selectexpr



Naudodami PySpark funkciją selectExpr (), galime tiesiogiai įvertinti išraišką, nekurdami jokios LENTELĖS ar RODINIMO. Ši funkcija pasiekiama modulyje pyspark.sql.DataFrame, kuris yra panašus į select() metodą. Su selectExpr() galime atvaizduoti stulpelius, taikyti stulpelių funkcijas, įvertinti išraiškas, atlikti agregavimo operacijas ir tt Taip pat vienu metu galima įvertinti/nurodyti kelis stulpelius.

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 pyspark

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)

# 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 pyspark

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)

# 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 pyspark

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)

# 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:

  1. Rodyti tikrąjį stulpelį „Acres“.
  2. Į stulpelį „Acres“ pridėkite 100.
  3. Iš stulpelio „Acres“ atimkite 100.
  4. Padauginkite 100 iš stulpelio „Acres“.
  5. Stulpelį „Acres“ padalinkite iš 100.
importuoti pyspark

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:

  1. Raskite bendrą, vidurkį, skaičių, mažiausią ir didžiausią „Acres“ elementus.
  2. Stulpelyje „Soil_status“ raskite mažiausią ir didžiausią elementą.
importuoti pyspark

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.