PySpark SelectExpr()

Pyspark Selectexpr



PySpark میں SelectExpr() فنکشن کا استعمال کرتے ہوئے، ہم کوئی ٹیبل یا VIEW بنائے بغیر کسی اظہار کا براہ راست جائزہ لے سکتے ہیں۔ یہ فنکشن pyspark.sql.DataFrame ماڈیول میں دستیاب ہے جو Select() طریقہ سے ملتا جلتا ہے۔ SelectExpr() کے ساتھ، ہم کالم ڈسپلے کر سکتے ہیں، کالموں پر فنکشن لاگو کر سکتے ہیں، تاثرات کا جائزہ لے سکتے ہیں، ایگریگیشن آپریشنز انجام دے سکتے ہیں۔

Pyspark.sql.DataFrame.selectExpr()

Selectexpr() فنکشن کالم/اظہار کا سیٹ لیتا ہے اور مخصوص اظہار/کالم کی بنیاد پر ڈیٹا فریم لوٹاتا ہے۔ اس فنکشن میں ایک سے زیادہ ایکسپریشنز کی وضاحت کی جا سکتی ہے جسے کوما سے الگ کیا گیا ہے۔ ڈیٹا فریم کو ظاہر کرنے کے لیے، ہم show()/collect() فنکشنز استعمال کر سکتے ہیں۔

نحو:







pyspark_DataFrame_object.selectExpr('کالم'/'اظہار')

یہاں، pyspark_DataFrame_object ان پٹ PySpark DataFrame ہے۔



منظر نامہ 1: کالم منتخب کریں۔

اس منظر نامے میں، ہم دیکھیں گے کہ PySpark DataFrame سے سلیکٹ ایکسپر() فنکشن کا استعمال کرتے ہوئے مخصوص کالموں کو کیسے منتخب کیا جائے۔



جو اظہار استعمال کیا جاتا ہے وہ ہے 'موجودہ_کالم بطور نئے_نام'۔ یہاں، موجودہ_کالم کالم کا نام ہے جو ڈیٹا فریم میں موجود ہے اور اسے new_name (Aliasing) کے طور پر دکھایا گیا ہے۔





مثال:

5 قطاروں اور کالموں کے ساتھ 'agri_df' کے نام سے ایک PySpark ڈیٹا فریم بنائیں۔ 'Soil_status' اور 'Soil_Type' کالم کو 'STATUS' اور 'TYPE' کے طور پر حاصل کریں۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

5 قطاروں اور 5 کالموں کے ساتھ # کاشتکاری کا ڈیٹا

زرعی =[{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 2500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 3500 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'ہندوستان'

{ 'مٹی_کی قسم' : کوئی نہیں۔ ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 210 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'برطانیہ'

{ 'مٹی_کی قسم' : 'دیگر' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 1000 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'ریت' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'ہندوستان' }]



# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

agri_df = linuxhint_spark_app.createDataFrame(agri)

#Soil_status اور Soil_Type کو 'STATUS' اور 'TYPE' کے طور پر حاصل کریں۔

agri_df.selectExpr( 'مٹی_کی حیثیت بطور STATUS' ، 'Soil_Type as TYPE' .show()

آؤٹ پٹ:



منظر نامہ 2: مشروط تاثرات کی وضاحت کرنا

اس منظر نامے میں، ہم دیکھیں گے کہ سلیکٹ ایکسپر() فنکشن کے اندر حالات کا اندازہ کیسے لگایا جائے۔

جو اظہار استعمال کیا جاتا ہے وہ ہے 'موجودہ_کالم آپریٹر ویلیو'۔ یہاں، موجودہ_کالم کالم کا نام ہے جو ڈیٹا فریم میں موجود ہے اور ہم اس کالم میں ہر قدر کا سٹرنگ/ویلیو سے موازنہ کرتے ہیں۔

مثال 1:

چیک کریں کہ آیا ملک 'USA' ہے یا نہیں۔ Equalto (=) آپریٹر یہاں استعمال ہوتا ہے۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

5 قطاروں اور 5 کالموں کے ساتھ # کاشتکاری کا ڈیٹا

زرعی =[{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 2500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 3500 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'ہندوستان'

{ 'مٹی_کی قسم' : کوئی نہیں۔ ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 210 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'برطانیہ'

{ 'مٹی_کی قسم' : 'دیگر' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 1000 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'ریت' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'ہندوستان' }]



# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

agri_df = linuxhint_spark_app.createDataFrame(agri)

# چیک کریں کہ ملک 'USA' ہے یا نہیں۔

agri_df.selectExpr( 'ملک = 'USA'' .show()

آؤٹ پٹ:

مثال 2:

چیک کریں کہ مٹی_ٹائپ NULL ہے یا نہیں۔ NULL کلیدی لفظ چیک کرتا ہے کہ آیا قدر NULL ہے یا نہیں۔ اگر یہ null ہے، تو true لوٹا دیا جاتا ہے۔ دوسری صورت میں، غلط واپس آ جائے گا. حتمی اظہار ہے 'مٹی_کی قسم IS NULL'

pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

5 قطاروں اور 5 کالموں کے ساتھ # کاشتکاری کا ڈیٹا

زرعی =[{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 2500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 3500 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'ہندوستان'

{ 'مٹی_کی قسم' : کوئی نہیں۔ ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 210 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'برطانیہ'

{ 'مٹی_کی قسم' : 'دیگر' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 1000 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'ریت' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'ہندوستان' }]



# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

agri_df = linuxhint_spark_app.createDataFrame(agri)

# چیک کریں کہ مٹی_ٹائپ NULL ہے یا نہیں۔

agri_df.selectExpr( 'مٹی کی_قسم NULL ہے' .show()

آؤٹ پٹ:

منظر نامہ 3: تاثرات کا اندازہ لگانا

اس منظر نامے میں، ہم دیکھیں گے کہ ریاضی کے اظہار کو کیسے بیان کیا جائے۔ جو اظہار استعمال کیا جاتا ہے وہ ہے 'موجودہ_کالم ریاضیاتی_اظہار'۔

مثال:

  1. اصل 'ایکڑ' کالم دکھائیں۔
  2. 'ایکڑ' کالم میں 100 کا اضافہ کریں۔
  3. 'ایکڑ' کالم سے 100 کو گھٹائیں۔
  4. 'ایکڑ' کالم کے ساتھ 100 کو ضرب دیں۔
  5. 'ایکڑ' کالم کو 100 سے تقسیم کریں۔
pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

5 قطاروں اور 5 کالموں کے ساتھ # کاشتکاری کا ڈیٹا

زرعی =[{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 2500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 3500 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'ہندوستان'

{ 'مٹی_کی قسم' : کوئی نہیں۔ ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 210 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'برطانیہ'

{ 'مٹی_کی قسم' : 'دیگر' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 1000 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'ریت' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'ہندوستان' }]



# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

agri_df = linuxhint_spark_app.createDataFrame(agri)

# ایکڑ کالم کو گھٹانے، شامل کرنے، تقسیم کرنے اور ضرب کرنے کے لیے 4 اظہارات لکھیں۔

agri_df.selectExpr( 'ایکڑ' ، 'ایکڑ - 100' ، 'ایکڑ * 100' ، 'ایکڑ + 100' ، 'ایکڑ / 100' .show()

آؤٹ پٹ:

منظر نامہ 4: مجموعی افعال کو لاگو کرنا

SUM(کالم_نام) - یہ مخصوص کالم میں کل قیمت کا اندازہ کرتا ہے۔

MEAN(کالم_نام) - یہ مخصوص کالم میں اوسط قدر کا اندازہ کرتا ہے۔

MIN(کالم_نام) - یہ مخصوص کالم میں موجود تمام عناصر کے درمیان کم از کم عنصر کو لوٹاتا ہے۔

MAX(کالم_نام) - یہ مخصوص کالم میں تمام عناصر کے درمیان زیادہ سے زیادہ عنصر کو لوٹاتا ہے۔

مثال:

  1. 'ایکڑ' کے کل، اوسط، شمار، کم سے کم اور زیادہ سے زیادہ عناصر تلاش کریں۔
  2. 'Soil_status' کالم میں کم سے کم اور زیادہ سے زیادہ عناصر تلاش کریں۔
pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

5 قطاروں اور 5 کالموں کے ساتھ # کاشتکاری کا ڈیٹا

زرعی =[{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 2500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'سیاہ' ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 3500 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'ہندوستان'

{ 'مٹی_کی قسم' : کوئی نہیں۔ ، 'آبپاشی_کی دستیابی' : 'جی ہاں' ، 'ایکڑ' : 210 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'برطانیہ'

{ 'مٹی_کی قسم' : 'دیگر' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 1000 ، 'مٹی_کی حیثیت' : 'گیلا' ،
'ملک' : 'امریکا'

{ 'مٹی_کی قسم' : 'ریت' ، 'آبپاشی_کی دستیابی' : 'نہیں' ، 'ایکڑ' : 500 ، 'مٹی_کی حیثیت' : 'خشک' ،
'ملک' : 'ہندوستان' }]



# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

agri_df = linuxhint_spark_app.createDataFrame(agri)

# مجموعی آپریشن

agri_df.selectExpr( 'SUM (ایکڑ)' ، 'MEAN (ایکڑ)' ، 'COUNT(ایکڑ)' ، 'AVG(ایکڑ)' ، 'MIN (ایکڑ)' ،
'MAX(ایکڑ)' .show()

agri_df.selectExpr( 'MIN(Soil_status)' ، 'MAX(مٹی_اسٹیٹس)' .show()

آؤٹ پٹ:

نتیجہ

ہم نے SelectExpr() فنکشن کے بارے میں تبادلہ خیال کیا جو کالم/اظہار کے سیٹ لیتا ہے اور مخصوص اظہار/کالم کی بنیاد پر ڈیٹا فریم واپس کرتا ہے۔ اس کے حصے کے طور پر، ہم نے وہ چار بڑے منظرنامے سیکھے جن میں SelectExpr() لاگو ہوتا ہے۔ اس فنکشن میں ایک سے زیادہ ایکسپریشنز کی وضاحت کی جا سکتی ہے جو کوما سے الگ کیے گئے ہیں۔ SelectExpr() فنکشن کو استعمال کرنے کے لیے عارضی منظر بنانے کی ضرورت نہیں ہے۔