Pyspark.sql.DataFrame.selectExpr ()
تأخذ الدالة selectexpr () الأعمدة / مجموعة التعبيرات وترجع DataFrame بناءً على التعبيرات / الأعمدة المحددة. يمكن تحديد تعبيرات متعددة في هذه الوظيفة مفصولة بفاصلة. لعرض DataFrame ، يمكننا استخدام وظائف show () / collection ().
بناء الجملة:
pyspark_DataFrame_object.selectExpr ('الأعمدة' / 'التعبيرات')
هنا ، pyspark_DataFrame_object هو إدخال PySpark DataFrame.
السيناريو 1: حدد الأعمدة
في هذا السيناريو ، سنرى كيفية تحديد أعمدة معينة من PySpark DataFrame باستخدام وظيفة selectExpr ().
التعبير المستخدم هو 'العمود الموجود باسم جديد'. هنا ، يوجد اسم العمود الموجود في DataFrame ويتم عرضه كـ new_name (Aliasing).
مثال:
قم بإنشاء PySpark DataFrame باسم “agri_df” مع 5 صفوف وأعمدة. احصل على أعمدة 'Soil_status' و 'Soil_Type' كـ 'STATUS' و 'TYPE'.
استيراد pysparkمن pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()
# بيانات الزراعة مع 5 صفوف و 5 أعمدة
agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،
{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،
{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]
# إنشاء إطار البيانات من البيانات أعلاه
agri_df = linuxhint_spark_app.createDataFrame (agri)
# احصل على Soil_status و Soil_Type كـ 'STATUS' و 'TYPE'.
agri_df.selectExpr ( 'Soil_status as STATUS' و 'نوع التربة كـ TYPE' ).يعرض()
انتاج:
السيناريو 2: تحديد التعبيرات الشرطية
في هذا السيناريو ، سنرى كيفية تقييم الشروط داخل وظيفة selectExpr ().
التعبير المستخدم هو 'قيمة عامل تشغيل العمود الموجود'. هنا ، يوجد عمود موجود هو اسم العمود الموجود في DataFrame ونقارن كل قيمة في هذا العمود بالسلسلة / القيمة.
مثال 1:
تحقق مما إذا كانت الدولة 'USA' أم لا. يتم استخدام عامل المساواة (=) هنا.
استيراد pysparkمن pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()
# بيانات الزراعة مع 5 صفوف و 5 أعمدة
agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،
{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،
{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]
# إنشاء إطار البيانات من البيانات أعلاه
agri_df = linuxhint_spark_app.createDataFrame (agri)
# تحقق مما إذا كانت الدولة 'USA' أم لا.
agri_df.selectExpr ( 'الدولة =' الولايات المتحدة الأمريكية ' ).يعرض()
انتاج:
المثال 2:
تحقق مما إذا كان Soil_Type فارغًا أم لا. تتحقق الكلمة الأساسية NULL مما إذا كانت القيمة NULL أم لا. إذا كانت خالية ، فسيتم إرجاع صحيح. خلاف ذلك ، يتم إرجاع خطأ. التعبير الأخير هو 'Soil_Type IS NULL'
استيراد pysparkمن pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()
# بيانات الزراعة مع 5 صفوف و 5 أعمدة
agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،
{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،
{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]
# إنشاء إطار البيانات من البيانات أعلاه
agri_df = linuxhint_spark_app.createDataFrame (agri)
# تحقق مما إذا كان Soil_Type فارغًا أم لا.
agri_df.selectExpr ( 'Soil_Type IS NULL' ).يعرض()
انتاج:
السيناريو 3: تقييم التعبيرات
في هذا السيناريو ، سنرى كيفية تحديد التعبيرات الرياضية. التعبير المستخدم هو 'تعبير_الرياضيات الموجودة في العمود'.
مثال:
- اعرض عمود 'الفدان' الفعلي.
- أضف 100 إلى عمود 'فدان'.
- اطرح 100 من عمود 'فدان'.
- اضرب 100 بعمود 'فدان'.
- قسّم عمود 'الفدان' على 100.
من pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()
# بيانات الزراعة مع 5 صفوف و 5 أعمدة
agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،
{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،
{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]
# إنشاء إطار البيانات من البيانات أعلاه
agri_df = linuxhint_spark_app.createDataFrame (agri)
# اكتب 4 تعبيرات لطرح وإضافة وقسمة وضرب العمود.
agri_df.selectExpr ( 'فدان' و 'فدان - 100' و 'فدان * 100' و 'فدان + 100' و 'فدان / 100' ).يعرض()
انتاج:
السيناريو 4: تطبيق الدوال التجميعية
SUM (اسم_العمود) - يقوم بتقييم القيمة الإجمالية في العمود المحدد.
MEAN (اسم العمود) - يقوم بتقييم متوسط القيمة في العمود المحدد.
MIN (اسم_العمود) - تقوم بإرجاع الحد الأدنى للعنصر بين جميع العناصر في العمود المحدد.
MAX (اسم_العمود) - تقوم بإرجاع الحد الأقصى للعنصر بين جميع العناصر في العمود المحدد.
مثال:
- ابحث عن إجمالي ، ومتوسط ، وعدد ، وحد أدنى ، وحد أقصى لعناصر 'الفدان'.
- ابحث عن الحد الأدنى والحد الأقصى من العناصر في عمود 'Soil_status'.
من pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()
# بيانات الزراعة مع 5 صفوف و 5 أعمدة
agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،
{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،
{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،
{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]
# إنشاء إطار البيانات من البيانات أعلاه
agri_df = linuxhint_spark_app.createDataFrame (agri)
# إجمالي العمليات
agri_df.selectExpr ( 'سوم (فدان)' و 'يعني (فدان)' و 'COUNT (فدان)' و 'AVG (فدان)' و 'MIN (فدان)' و
'MAX (فدان)' ).يعرض()
agri_df.selectExpr ( 'MIN (Soil_status)' و 'MAX (Soil_status)' ).يعرض()
انتاج:
خاتمة
ناقشنا حول وظيفة selectExpr () التي تأخذ أعمدة / مجموعات التعبيرات وتعيد DataFrame بناءً على التعبيرات / الأعمدة المحددة. كجزء من هذا ، تعلمنا السيناريوهات الأربعة الرئيسية التي يكون فيها selectExpr () قابلاً للتطبيق. يمكن تحديد تعبيرات متعددة في هذه الوظيفة مفصولة بفاصلة. ليست هناك حاجة لإنشاء عرض مؤقت لاستخدام وظيفة selectExpr ().