パンダテーブルフォーマット

潜在意識の中で顧客に直接データを送信する方法がまだわからない場合、または最悪の場合、メッセージのテキストが緩んでいる場合は、テーブルの解釈プロセスをより速く、より快適にする方法に関する情報が必要になります。



たとえば、excelはこれに条件付き書式スパークラインを使用しますそして、この記事では、Pythonやライブラリを使用してデータを視覚化する方法について説明しますpandas:我々が使用するDataFrame.styleと、プロパティをOptions and settings



基本的なレンダリングの設定



ライブラリをインポートします:pandasデータの操作とseabornクラシックデータセットのロード用penguins



import pandas as pd
import seaborn as sns


次のpd.set_optionように出力構成するために使用します。



  • テーブルの行数は5つ以下でした。
  • セル内のテキストは、長さに関係なく完全に反映されていました(これは、セルに表示したい長いタイトルまたはURLがある場合に便利です)。
  • すべての数値は小数点以下2桁で反映されています。


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'. :



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




でテーブルをフォーマットするpandasDataFrame.styleOptions and settings楽になり、あるいは少なくともコードやレポートの読みやすさを向上させます。ただし、データタイプ、ギャップ、およびレジスタの処理は、もちろん、視覚化の段階の前でも意識的に実行する方が適切です。



さらに、以下に対処できます。






All Articles