PySpark SelectExpr()

Pyspark Selectexpr



PySparkలో selectExpr() ఫంక్షన్‌ని ఉపయోగించి, మనం ఏ TABLE లేదా VIEWని సృష్టించకుండానే ఎక్స్‌ప్రెషన్‌ని నేరుగా మూల్యాంకనం చేయవచ్చు. ఈ ఫంక్షన్ pyspark.sql.DataFrame మాడ్యూల్‌లో అందుబాటులో ఉంది, ఇది సెలెక్ట్() పద్ధతిని పోలి ఉంటుంది. selectExpr()తో, మేము నిలువు వరుసలను ప్రదర్శించవచ్చు, నిలువు వరుసలపై ఫంక్షన్‌లను వర్తింపజేయవచ్చు, వ్యక్తీకరణలను మూల్యాంకనం చేయవచ్చు, అగ్రిగేషన్‌ల కార్యకలాపాలను నిర్వహించవచ్చు.

Pyspark.sql.DataFrame.selectExpr()

selectexpr() ఫంక్షన్ కాలమ్‌లు/ఎక్స్‌ప్రెషన్‌ల సెట్‌ను తీసుకుంటుంది మరియు పేర్కొన్న ఎక్స్‌ప్రెషన్‌లు/నిలువు వరుసల ఆధారంగా డేటాఫ్రేమ్‌ను అందిస్తుంది. కామాతో వేరు చేయబడిన ఈ ఫంక్షన్‌లో బహుళ వ్యక్తీకరణలను పేర్కొనవచ్చు. డేటాఫ్రేమ్‌ను ప్రదర్శించడానికి, మేము షో()/కలెక్ట్() ఫంక్షన్‌లను ఉపయోగించవచ్చు.

సింటాక్స్:







pyspark_DataFrame_object.selectExpr(“నిలువు వరుసలు”/”వ్యక్తీకరణలు”)

ఇక్కడ, pyspark_DataFrame_object అనేది ఇన్‌పుట్ PySpark DataFrame.



దృశ్యం 1: నిలువు వరుసలను ఎంచుకోండి

ఈ దృష్టాంతంలో, selectExpr() ఫంక్షన్‌ని ఉపయోగించి PySpark DataFrame నుండి నిర్దిష్ట నిలువు వరుసలను ఎలా ఎంచుకోవాలో చూద్దాం.



ఉపయోగించిన వ్యక్తీకరణ 'existing_column as new_name'. ఇక్కడ, ప్రస్తుత_నిలువు అనేది డేటాఫ్రేమ్‌లో ఉన్న నిలువు వరుస పేరు మరియు ఇది కొత్త_పేరు (అలియాసింగ్)గా ప్రదర్శించబడుతుంది.





ఉదాహరణ:

5 అడ్డు వరుసలు మరియు నిలువు వరుసలతో “agri_df” పేరుతో PySpark DataFrameని సృష్టించండి. 'Soil_status' మరియు 'Soil_Type' నిలువు వరుసలను 'STATUS' మరియు 'TYPE'గా పొందండి.

పైస్పార్క్ దిగుమతి

pyspark.sql దిగుమతి SparkSession నుండి

linuxhint_spark_app = SparkSession.builder.appName( 'Linux సూచన' ).getOrCreate()

5 అడ్డు వరుసలు మరియు 5 నిలువు వరుసలతో # వ్యవసాయ డేటా

అగ్రి =[{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 2500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 3500 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'భారతదేశం' },

{ 'నేల_రకం' : ఏదీ లేదు , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 210 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'UK' },

{ 'నేల_రకం' : 'ఇతర' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 1000 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'ఇసుక' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'భారతదేశం' }]



# పై డేటా నుండి డేటాఫ్రేమ్‌ను సృష్టించండి

agri_df = linuxhint_spark_app.createDataFrame(agri)

# నేల_స్థితి మరియు నేల_రకాన్ని 'STATUS' మరియు 'TYPE'గా పొందండి.

agri_df.selectExpr( 'STATUS వలె నేల_స్థితి' , 'TYPE వలె నేల_రకం' )షో()

అవుట్‌పుట్:



దృశ్యం 2: షరతులతో కూడిన వ్యక్తీకరణలను పేర్కొనడం

ఈ దృష్టాంతంలో, మేము selectExpr() ఫంక్షన్‌లోని పరిస్థితులను ఎలా మూల్యాంకనం చేయాలో చూద్దాం.

ఉపయోగించిన వ్యక్తీకరణ “existing_column ఆపరేటర్ విలువ”. ఇక్కడ, ప్రస్తుత_నిలువు అనేది డేటాఫ్రేమ్‌లో ఉన్న నిలువు వరుస పేరు మరియు మేము ఈ నిలువు వరుసలోని ప్రతి విలువను స్ట్రింగ్/విలువతో పోల్చాము.

ఉదాహరణ 1:

దేశం 'USA' కాదా అని తనిఖీ చేయండి. ఈక్వల్టో (=) ఆపరేటర్ ఇక్కడ ఉపయోగించబడుతుంది.

పైస్పార్క్ దిగుమతి

pyspark.sql దిగుమతి SparkSession నుండి

linuxhint_spark_app = SparkSession.builder.appName( 'Linux సూచన' ).getOrCreate()

5 అడ్డు వరుసలు మరియు 5 నిలువు వరుసలతో # వ్యవసాయ డేటా

అగ్రి =[{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 2500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 3500 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'భారతదేశం' },

{ 'నేల_రకం' : ఏదీ లేదు , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 210 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'UK' },

{ 'నేల_రకం' : 'ఇతర' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 1000 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'ఇసుక' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'భారతదేశం' }]



# పై డేటా నుండి డేటాఫ్రేమ్‌ను సృష్టించండి

agri_df = linuxhint_spark_app.createDataFrame(agri)

# దేశం 'USA' కాదా అని తనిఖీ చేయండి.

agri_df.selectExpr( 'దేశం = 'USA'' )షో()

అవుట్‌పుట్:

ఉదాహరణ 2:

నేల_రకం NULL కాదా అని తనిఖీ చేయండి. NULL కీవర్డ్ విలువ NULL కాదా అని తనిఖీ చేస్తుంది. అది శూన్యంగా ఉంటే, నిజం తిరిగి ఇవ్వబడుతుంది. లేకపోతే, తప్పు తిరిగి ఇవ్వబడుతుంది. అంతిమ వ్యక్తీకరణ “Soil_Type IS NULL”

పైస్పార్క్ దిగుమతి

pyspark.sql దిగుమతి SparkSession నుండి

linuxhint_spark_app = SparkSession.builder.appName( 'Linux సూచన' ).getOrCreate()

5 అడ్డు వరుసలు మరియు 5 నిలువు వరుసలతో # వ్యవసాయ డేటా

అగ్రి =[{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 2500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 3500 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'భారతదేశం' },

{ 'నేల_రకం' : ఏదీ లేదు , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 210 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'UK' },

{ 'నేల_రకం' : 'ఇతర' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 1000 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'ఇసుక' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'భారతదేశం' }]



# పై డేటా నుండి డేటాఫ్రేమ్‌ను సృష్టించండి

agri_df = linuxhint_spark_app.createDataFrame(agri)

# నేల_రకం NULL కాదా అని తనిఖీ చేయండి.

agri_df.selectExpr( 'నేల_రకం శూన్యం' )షో()

అవుట్‌పుట్:

దృశ్యం 3: వ్యక్తీకరణలను మూల్యాంకనం చేయడం

ఈ దృష్టాంతంలో, గణిత వ్యక్తీకరణలను ఎలా పేర్కొనాలో చూద్దాం. ఉపయోగించిన వ్యక్తీకరణ “existing_column mathematical_expression”.

ఉదాహరణ:

  1. అసలు 'ఎకరాలు' నిలువు వరుసను ప్రదర్శించండి.
  2. 'ఎకరాలు' నిలువు వరుసకు 100 జోడించండి.
  3. 'ఎకరాలు' నిలువు వరుస నుండి 100 తీసివేయండి.
  4. 'ఎకరాలు' నిలువు వరుసతో 100ని గుణించండి.
  5. 'ఎకరాలు' నిలువు వరుసను 100 ద్వారా విభజించండి.
పైస్పార్క్ దిగుమతి

pyspark.sql దిగుమతి SparkSession నుండి

linuxhint_spark_app = SparkSession.builder.appName( 'Linux సూచన' ).getOrCreate()

5 అడ్డు వరుసలు మరియు 5 నిలువు వరుసలతో # వ్యవసాయ డేటా

అగ్రి =[{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 2500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 3500 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'భారతదేశం' },

{ 'నేల_రకం' : ఏదీ లేదు , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 210 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'UK' },

{ 'నేల_రకం' : 'ఇతర' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 1000 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'ఇసుక' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'భారతదేశం' }]



# పై డేటా నుండి డేటాఫ్రేమ్‌ను సృష్టించండి

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Acres నిలువు వరుసను తీసివేయడానికి, జోడించడానికి, విభజించడానికి మరియు గుణించడానికి 4 వ్యక్తీకరణలను వ్రాయండి.

agri_df.selectExpr( 'ఎకరాలు' , 'ఎకరాలు - 100' , 'ఎకరాలు * 100' , 'ఎకరాలు + 100' , 'ఎకరాలు / 100' )షో()

అవుట్‌పుట్:

దృష్టాంతం 4: మొత్తం విధులను వర్తింపజేయడం

SUM(column_name) - ఇది పేర్కొన్న నిలువు వరుసలో మొత్తం విలువను అంచనా వేస్తుంది.

MEAN(column_name) - ఇది పేర్కొన్న నిలువు వరుసలో సగటు విలువను అంచనా వేస్తుంది.

MIN(నిలువు_పేరు) – ఇది పేర్కొన్న నిలువు వరుసలోని అన్ని మూలకాలలో కనీస మూలకాన్ని అందిస్తుంది.

MAX(column_name) – ఇది పేర్కొన్న నిలువు వరుసలోని అన్ని మూలకాలలో గరిష్ట మూలకాన్ని అందిస్తుంది.

ఉదాహరణ:

  1. 'ఎకరాలు' యొక్క మొత్తం, సగటు, గణన, కనిష్ట మరియు గరిష్ట అంశాలను కనుగొనండి.
  2. 'Soil_status' నిలువు వరుసలో కనిష్ట మరియు గరిష్ట అంశాలను కనుగొనండి.
పైస్పార్క్ దిగుమతి

pyspark.sql దిగుమతి SparkSession నుండి

linuxhint_spark_app = SparkSession.builder.appName( 'Linux సూచన' ).getOrCreate()

5 అడ్డు వరుసలు మరియు 5 నిలువు వరుసలతో # వ్యవసాయ డేటా

అగ్రి =[{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 2500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'నలుపు' , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 3500 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'భారతదేశం' },

{ 'నేల_రకం' : ఏదీ లేదు , 'నీటిపారుదల_లభ్యత' : 'అవును' , 'ఎకరాలు' : 210 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'UK' },

{ 'నేల_రకం' : 'ఇతర' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 1000 , 'నేల_స్థితి' : 'తడి' ,
'దేశం' : 'USA' },

{ 'నేల_రకం' : 'ఇసుక' , 'నీటిపారుదల_లభ్యత' : 'లేదు' , 'ఎకరాలు' : 500 , 'నేల_స్థితి' : 'పొడి' ,
'దేశం' : 'భారతదేశం' }]



# పై డేటా నుండి డేటాఫ్రేమ్‌ను సృష్టించండి

agri_df = linuxhint_spark_app.createDataFrame(agri)

# మొత్తం కార్యకలాపాలు

agri_df.selectExpr( 'మొత్తం(ఎకరాలు)' , 'సగటు(ఎకరాలు)' , 'COUNT(ఎకరాలు)' , 'AVG(ఎకరాలు)' , 'MIN(ఎకరాలు)' ,
'MAX(ఎకరాలు)' )షో()

agri_df.selectExpr( 'MIN(నేల_స్థితి)' , 'MAX(నేల_స్థితి)' )షో()

అవుట్‌పుట్:

ముగింపు

మేము సెలెక్ట్‌ఎక్స్‌పిఆర్() ఫంక్షన్ గురించి చర్చించాము, ఇది కాలమ్‌లు/ఎక్స్‌ప్రెషన్‌ల సెట్‌లను తీసుకుంటుంది మరియు పేర్కొన్న ఎక్స్‌ప్రెషన్‌లు/నిలువు వరుసల ఆధారంగా డేటాఫ్రేమ్‌ను అందిస్తుంది. ఇందులో భాగంగా, మేము selectExpr() వర్తించే నాలుగు ప్రధాన దృశ్యాలను నేర్చుకున్నాము. కామాతో వేరు చేయబడిన ఈ ఫంక్షన్‌లో బహుళ వ్యక్తీకరణలను పేర్కొనవచ్చు. selectExpr() ఫంక్షన్‌ని ఉపయోగించడానికి తాత్కాలిక వీక్షణను సృష్టించాల్సిన అవసరం లేదు.