تنسيق جدول الباندا

إذا كنت لا تعرف حتى الآن كيفية نقل البيانات مباشرة إلى العميل في العقل الباطن ، أو في أسوأ الأحوال ، نص الرسالة في فترة الركود ، فستحتاج إلى معلومات حول كيفية جعل عملية تفسير الجداول أسرع وأكثر راحة.



على سبيل المثال ، يستخدم برنامج Excel التنسيق الشرطي وخطوط المؤشرات لهذا الغرض . وفي هذه المقالة سنرى كيفية تصور البيانات باستخدام Python والمكتبة pandas: سنستخدم الخصائص DataFrame.styleو Options and settings.



إعداد العرض الأساسي



نستورد المكتبات: pandasللعمل مع البيانات seabornولتحميل مجموعة بيانات كلاسيكية penguins:



import pandas as pd
import seaborn as sns


تُستخدم pd.set_optionلتكوين الإخراج بحيث:



  • عدد الصفوف في الجدول لا يزيد عن 5 ؛
  • انعكس النص الموجود في الخلية بالكامل بغض النظر عن الطول (يكون هذا مناسبًا إذا كانت الخلية لها عنوان طويل أو عنوان URL تريد رؤيته) ؛
  • تم عكس جميع الأرقام مع منزلتين عشريتين ؛


pd.set_option('max_rows', 5)
pd.set_option('display.max_colwidth', None)
pd.set_option('display.float_format', '{:.2f}'.format)


دعونا نقرأ ونرى إطار البيانات.



penguins = sns.load_dataset(‘penguins’)
penguins


صورة



إذا كنت بحاجة إلى إعادة الإعدادات إلى الإعدادات الافتراضية ، فاستخدم pd.reset_option. على سبيل المثال ، مثل هذا ، إذا أردنا تحديث جميع الإعدادات مرة واحدة:



pd.reset_option('all')


قائمة كاملة من الخصائص set_option.



إعداد عرض البيانات بالجداول



تنسيق الأرقام والفجوات والحالة



pandasتحتوي إطارات البيانات على خاصية DataFrame.styleتغير عرض محتويات الخلايا حسب الشرط للصفوف أو الأعمدة.



, , .



(penguins
 .head(5)
 .style
 .format('{:.1f}', na_rep='-')
 .format({'species': lambda x:x.lower(),
          'island': lambda x:x.lower(),
          'sex': lambda x: '-' if pd.isna(x) else x.lower()
         })
)


صورة



, , ₽ :



(df
.style
.format({'price': '₽{:.2f}'})
)


— !



(, , )



, , , . subset.



numeric_columns = ['bill_length_mm',
                   'bill_depth_mm',
                   'flipper_length_mm',
                   'body_mass_g']


, 5 .



(penguins
 .head(5)
 .style
 .format('{:.1f}', na_rep='-')
 .format({'species': lambda x:x.lower(),
          'island': lambda x:x.lower(),
          'sex': lambda x: '-' if pd.isna(x) else x.lower()
         })
 .highlight_null(null_color='lightgrey')
 .highlight_max(color='yellowgreen', subset=numeric_columns)
 .highlight_min(color='coral', subset=numeric_columns)
)


صورة



, 5 2 (!) .



: - Adelie.



Bar chart



, Adelie .



adelie_female = (penguins[(penguins['species'] == 'Adelie') & 
                          (penguins['sex'] == 'FEMALE')]
                 .copy()
                )

adelie_female['flipper_l_var'] = ((adelie_female['flipper_length_mm']- 
                                                 adelie_female['flipper_length_mm'].mean()).round())


, 'flipper_l_var'. :



  • (subset), ;
  • (align): mid — , , . ;
  • (color). 2 : ;
  • (vmin, vmax).


set_properties , 'flipper_l_var' .



(adelie_female
 .head(5)
 .style
 .format('{:.1f}', na_rep='-')
 .format({'species': lambda x:x.lower(),
          'island': lambda x:x.lower(),
          'sex': lambda x: '-' if pd.isna(x) else x.lower()
         })
 .bar(subset=['flipper_l_var'],
      align='mid',
      color=['coral', 'yellowgreen'],
      vmin=adelie_female['flipper_l_var'].min(),
      vmax=adelie_female['flipper_l_var'].max()
     )
 .set_properties(**{'text-align': 'center'}, subset='flipper_l_var')
)


صورة



Heatmap



. , .



, .



species_stat=(penguins
             .groupby('species')
             .agg(penguins_count=('species','count'),
                  mean_bill_length=('bill_length_mm', 'mean'),
                  mean_bill_depth=('bill_depth_mm', 'mean'),
                  mean_flipper_length=('flipper_length_mm', 'mean'),
                  mean_body_mass=('body_mass_g', 'mean'),
                 )
             )


صورة



, , - , .



. , ?! -, , .



(species_stat
 .T
 .style
 .format("{:.1f}")
 .background_gradient(cmap='Blues', axis=1)
)


صورة



background_gradient :



  • (cmap): Blues. ;
  • (axis=1).




تنسيق الجداول في pandasمع DataFrame.styleو Options and settingsيجعل الحياة أسهل، أو على الأقل يحسن القراءة من رمز والتقارير. لكن معالجة أنواع البيانات والفجوات والتسجيل أفضل ، بالطبع ، لتنفيذها بشكل متعمد قبل مرحلة التصور.



بالإضافة إلى ذلك ، يمكنك التعامل مع:






All Articles