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.style
y Options and settings
.
Configurar el renderizado básico
Importamos bibliotecas: pandas
para trabajar con datos y seaborn
para cargar un conjunto de datos clásico penguins
:
import pandas as pd
import seaborn as sns
Úselo para pd.set_option
configurar 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 pandas
tienen una propiedad DataFrame.style
que 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'
. :
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 pandas
con DataFrame.style
y Options and settings
facilita 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_min
yhighlight_null
, pero para condiciones más sofisticados, puede escribir su propio; - A estas bibliotecas les gusta
sparklines
yPrettyPandas
.