Si vous ne savez pas encore comment transmettre des données directement au client dans le subconscient ou, au pire, le texte du message en relâche, vous aurez besoin d'informations sur la façon de rendre le processus d'interprétation des tableaux plus rapide et plus confortable.
Par exemple, Excel utilise la mise en forme conditionnelle et les graphiques sparkline pour cela . Et dans cet article, nous verrons comment visualiser des données à l'aide de Python et de la bibliothèque pandas
: nous utiliserons les propriétés DataFrame.style
et Options and settings
.
Configuration du rendu de base
Nous importons des bibliothèques: pandas
pour travailler avec des données et seaborn
pour charger un jeu de données classique penguins
:
import pandas as pd
import seaborn as sns
Utilisez pour pd.set_option
configurer la sortie afin que:
- le nombre de lignes du tableau n'était pas supérieur à 5;
- le texte dans la cellule était entièrement reflété quelle que soit la longueur (cela est pratique si la cellule a un long titre ou une URL que vous souhaitez voir);
- tous les nombres ont été reflétés avec deux décimales;
pd.set_option('max_rows', 5)
pd.set_option('display.max_colwidth', None)
pd.set_option('display.float_format', '{:.2f}'.format)
Lisons et voyons le dataframe.
penguins = sns.load_dataset(‘penguins’)
penguins
Si vous devez rétablir les paramètres par défaut, utilisez pd.reset_option
. Par exemple, comme ceci, si nous voulons mettre à jour tous les paramètres à la fois:
pd.reset_option('all')
Liste complète des propriétés set_option
.
Configuration de l'affichage des données dans les tableaux
Format des nombres, lacunes et cas
Les dataframes pandas
ont une propriété DataFrame.style
qui modifie l'affichage du contenu des cellules par condition pour les lignes ou les colonnes.
, , .
(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
).
Le formatage des tableaux pandas
avec DataFrame.style
et Options and settings
facilite la vie, ou du moins améliore la lisibilité du code et des rapports. Mais il est bien entendu préférable que le traitement des types de données, des lacunes et du registre soit effectué consciemment avant même le stade de la visualisation.
De plus, vous pouvez traiter:
- Exporter pour exceller ;
- Fonctions natives pour la mise en forme conditionnelle. Nous avons utilisé des fonctions intégrées
highlight_max
,highlight_min
ethighlight_null
, mais pour des conditions plus sophistiquées, vous pouvez écrire votre propre; - Ces bibliothèques aiment
sparklines
etPrettyPandas
.