Formato de mesa Pandas

Se você ainda não sabe como transmitir os dados diretamente ao cliente para o subconsciente ou, na pior das hipóteses, o texto da mensagem em folga, precisará de informações sobre como tornar o processo de interpretação de tabelas mais rápido e confortável.



Por exemplo, o Excel usa formatação condicional e minigráficos para isso . E neste artigo veremos como visualizar dados usando Python e a biblioteca pandas: usaremos as propriedades DataFrame.stylee Options and settings.



Configurando a renderização básica



Importamos bibliotecas: pandaspara trabalhar com dados e seabornpara carregar um conjunto de dados clássico penguins:



import pandas as pd
import seaborn as sns


Use para pd.set_optionconfigurar a saída de modo que:



  • o número de linhas na tabela não era superior a 5;
  • o texto na célula foi totalmente refletido, independentemente do comprimento (isso é conveniente se a célula tiver um título longo ou URL que você deseja ver);
  • todos os números foram refletidos com duas casas decimais;


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


Vamos ler e ver o dataframe.



penguins = sns.load_dataset(‘penguins’)
penguins


imagem



Se você precisar retornar as configurações ao padrão, use pd.reset_option. Por exemplo, assim, se quisermos atualizar todas as configurações de uma vez:



pd.reset_option('all')


Lista completa de propriedades set_option.



Configurando a exibição de dados em tabelas



Formato de número, lacunas e maiúsculas e minúsculas



Dataframes pandastêm uma propriedade DataFrame.styleque altera a exibição do conteúdo das células por condição para linhas ou colunas.



, , .



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


imagem



, , ₽ :



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


imagem



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


imagem



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


imagem



, , - , .



. , ?! -, , .



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


imagem



background_gradient :



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




A formatação de tabelas em pandascom DataFrame.stylee Options and settingstorna a vida mais fácil, ou pelo menos melhora a legibilidade do código e relatórios. Mas o processamento de tipos de dados, lacunas e registros é melhor, é claro, para ser realizado deliberadamente antes do estágio de visualização.



Além disso, você pode lidar com:






All Articles