Formato de tabla de pandas

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


imagen



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()
         })
)


imagen



, , ₽ :



(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)
)


imagen



, 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')
)


imagen



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'),
                 )
             )


imagen



, , - , .



. , ?! -, , .



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


imagen



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:






All Articles