Si aún no sabes cómo transmitir datos directamente al cliente en el subconsciente o, en el peor de los casos, el texto del mensaje en holgura, necesitarás información sobre cómo hacer que el proceso de interpretación de tablas sea más rápido y cómodo.
Por ejemplo, Excel usa formato condicional y minigráficos para esto . Y en este artículo veremos cómo visualizar datos usando Python y la biblioteca pandas: usaremos las propiedades DataFrame.styley Options and settings.
Configurar el renderizado básico
Importamos bibliotecas: pandaspara trabajar con datos y seabornpara cargar un conjunto de datos clásico penguins:
import pandas as pd
import seaborn as sns
Úselo para pd.set_optionconfigurar la salida de modo que:
- el número de filas en la tabla no era más de 5;
- el texto de la celda se reflejó completamente independientemente de la longitud (esto es conveniente si la celda tiene un título largo o una URL que desea ver)
- todos los números se reflejaron con dos decimales;
pd.set_option('max_rows', 5)
pd.set_option('display.max_colwidth', None)
pd.set_option('display.float_format', '{:.2f}'.format)
Leamos y veamos el marco de datos.
penguins = sns.load_dataset(‘penguins’)
penguins

Si necesita devolver la configuración a la predeterminada, utilice pd.reset_option. Por ejemplo, así, si queremos actualizar todas las configuraciones a la vez:
pd.reset_option('all')
Lista completa de propiedades set_option.
Configurar la visualización de datos en tablas
Formato numérico, espacios y caso
Los marcos de datos pandastienen una propiedad DataFrame.styleque cambia la visualización del contenido de las celdas por condición para filas o columnas.
, , .
(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).
Dar formato a las tablas pandascon DataFrame.styley Options and settingsfacilita la vida, o al menos mejora la legibilidad del código y los informes. Pero el procesamiento de tipos de datos, lagunas y registros es mejor, por supuesto, que se lleve a cabo conscientemente incluso antes de la etapa de visualización.
Además, puede lidiar con:
- Exportar para sobresalir ;
- Funciones nativas para formato condicional. Se utilizó funciones integradas
highlight_max,highlight_minyhighlight_null, pero para condiciones más sofisticados, puede escribir su propio; - A estas bibliotecas les gusta
sparklinesyPrettyPandas.