إذا كنت لا تعرف حتى الآن كيفية نقل البيانات مباشرة إلى العميل في العقل الباطن ، أو في أسوأ الأحوال ، نص الرسالة في فترة الركود ، فستحتاج إلى معلومات حول كيفية جعل عملية تفسير الجداول أسرع وأكثر راحة.
على سبيل المثال ، يستخدم برنامج 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'. :
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يجعل الحياة أسهل، أو على الأقل يحسن القراءة من رمز والتقارير. لكن معالجة أنواع البيانات والفجوات والتسجيل أفضل ، بالطبع ، لتنفيذها بشكل متعمد قبل مرحلة التصور.
بالإضافة إلى ذلك ، يمكنك التعامل مع:
- تصدير إلى Excel ؛
- الدالات الأصلية للتنسيق الشرطي. استخدمنا المدمج في وظائف
highlight_max،highlight_minوhighlight_null، ولكن لظروف أكثر تعقيدا، يمكنك الكتابة الخاصة بك. - هذه المكتبات مثل
sparklinesوPrettyPandas.