潜在意識の中で顧客に直接データを送信する方法がまだわからない場合、または最悪の場合、メッセージのテキストが緩んでいる場合は、テーブルの解釈プロセスをより速く、より快適にする方法に関する情報が必要になります。
たとえば、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'
. :
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
).
でテーブルをフォーマットするpandas
とDataFrame.style
とOptions and settings
楽になり、あるいは少なくともコードやレポートの読みやすさを向上させます。ただし、データタイプ、ギャップ、およびレジスタの処理は、もちろん、視覚化の段階の前でも意識的に実行する方が適切です。
さらに、以下に対処できます。
- 優れたものにエクスポート;
- 条件付き書式のネイティブ関数。私たちは、組み込み関数を使用
highlight_max
、highlight_min
そしてhighlight_null
、しかし、より洗練された条件のために、あなた自身を書くことができます。 sparklines
とのようなこれらのライブラリPrettyPandas
。