
Dans pandas, vous pouvez personnaliser le comportement global, tel que le format d’affichage, en définissant des options.
Cet article décrit le contenu suivant.
- Obtenez et définissez les valeurs d’option avec l’attribut :
options
- Imprimez la description des options :
describe_option()
- Obtenir et définir des valeurs d’option avec des fonctions :
get_option(), set_option()
- Obtenir et définir plusieurs valeurs d’option
- Réinitialisez les options aux valeurs par défaut :
reset_option()
- Modifiez temporairement les paramètres avec avec :
option_context()
Notez que la modification des options ne les réécrit pas de façon permanente ; un autre code utilise à nouveau les paramètres par défaut.
La version de pandas dans cet exemple de code est la suivante. Notez que pprint est utilisé pour faciliter la lecture de l’affichage.
import pandas as pd
import pprint
print(pd.__version__)
# 0.23.0
Obtenez et définissez les valeurs d’option avec l’attribut :options
Vous pouvez obtenir et définir les valeurs d’option par les attributs sous pd.options.
print(pd.options.display.max_rows)
# 60
pd.options.display.max_rows = 100
print(pd.options.display.max_rows)
# 100
Vous pouvez vérifier quels éléments sont disponibles avec la fonction intégrée dir().
print(dir(pd.options))
# ['compute', 'display', 'html', 'io', 'mode', 'plotting']
pprint.pprint(dir(pd.options.display))
# ['chop_threshold',
# 'colheader_justify',
# 'column_space',
# 'date_dayfirst',
# 'date_yearfirst',
# 'encoding',
# 'expand_frame_repr',
# 'float_format',
# 'html',
# 'large_repr',
# 'latex',
# 'max_categories',
# 'max_columns',
# 'max_colwidth',
# 'max_info_columns',
# 'max_info_rows',
# 'max_rows',
# 'max_seq_items',
# 'memory_usage',
# 'multi_sparse',
# 'notebook_repr_html',
# 'pprint_nest_depth',
# 'precision',
# 'show_dimensions',
# 'unicode',
# 'width']
Imprimez la description des options :describe_option()
Vous pouvez imprimer la description, la valeur par défaut et la valeur actuelle de chaque option avec la fonction pd.describe_option().
Si l’argument est omis, les informations sur toutes les options sont affichées. La sortie est omise ici.
Vous pouvez spécifier une chaîne de modèle d’expression régulière pour le premier argument. Les options correspondant au motif s’affichent. [par défaut : xxx] [actuellement : xxx] représente les valeurs par défaut et actuelles.
pd.describe_option('max.*col')
# display.max_columns : int
# If max_cols is exceeded, switch to truncate view. Depending on
# `large_repr`, objects are either centrally truncated or printed as
# a summary view. 'None' value means unlimited.
# In case python/IPython is running in a terminal and `large_repr`
# equals 'truncate' this can be set to 0 and pandas will auto-detect
# the width of the terminal and print a truncated object which fits
# the screen width. The IPython notebook, IPython qtconsole, or IDLE
# do not run in a terminal and hence it is not possible to do
# correct auto-detection.
# [default: 20] [currently: 20]
# display.max_colwidth : int
# The maximum width in characters of a column in the repr of
# a pandas data structure. When the column overflows, a "..."
# placeholder is embedded in the output.
# [default: 50] [currently: 50]
# display.max_info_columns : int
# max_info_columns is used in DataFrame.info method to decide if
# per column information will be printed.
# [default: 100] [currently: 100]
Si vous spécifiez uniquement une chaîne sans aucun caractère spécial de l’expression régulière, les options contenant la chaîne s’affichent.
pd.describe_option('compute')
# compute.use_bottleneck : bool
# Use the bottleneck library to accelerate if it is installed,
# the default is True
# Valid values: False,True
# [default: True] [currently: True]
# compute.use_numexpr : bool
# Use the numexpr library to accelerate computation if it is installed,
# the default is True
# Valid values: False,True
# [default: True] [currently: True]
pd.describe_option('max_col')
# display.max_columns : int
# If max_cols is exceeded, switch to truncate view. Depending on
# `large_repr`, objects are either centrally truncated or printed as
# a summary view. 'None' value means unlimited.
# In case python/IPython is running in a terminal and `large_repr`
# equals 'truncate' this can be set to 0 and pandas will auto-detect
# the width of the terminal and print a truncated object which fits
# the screen width. The IPython notebook, IPython qtconsole, or IDLE
# do not run in a terminal and hence it is not possible to do
# correct auto-detection.
# [default: 20] [currently: 20]
# display.max_colwidth : int
# The maximum width in characters of a column in the repr of
# a pandas data structure. When the column overflows, a "..."
# placeholder is embedded in the output.
# [default: 50] [currently: 50]
Obtenir et définir des valeurs d’option avec des fonctions :get_option(), set_option()
Vous pouvez également obtenir et définir des valeurs d’option avec des fonctions.
pd.get_option() renvoie la valeur de l’option actuelle.
print(pd.get_option('display.max_rows'))
# 100
Vous pouvez définir la valeur de l’option avec pd.set_option().
pd.set_option('display.max_rows', 60)
Vous pouvez spécifier un modèle d’expression régulière comme argument. Vous n’êtes pas obligé de spécifier le nom complet de l’élément, mais la correspondance de plusieurs éléments génère OptionError.
print(pd.get_option('max_r'))
# 60
pd.set_option('max_r', 100)
# pd.get_option('max')
# OptionError: 'Pattern matched multiple keys'
# pd.set_option('max', 60)
# OptionError: 'Pattern matched multiple keys'
Obtenir et définir plusieurs valeurs d’option
Les fonctions permettant d’obtenir et de définir plusieurs valeurs d’option ne sont pas fournies.
Cette section montre comment obtenir et définir plusieurs valeurs d’option avec des compréhensions de liste, etc.
Obtenez les valeurs d’option des noms d’éléments répertoriés avec les compréhensions de liste et de dict.
l = ['display.max_rows', 'display.max_columns', 'display.max_colwidth']
print([pd.get_option(i) for i in l])
# [100, 20, 50]
print({i: pd.get_option(i) for i in l})
# {'display.max_rows': 100, 'display.max_columns': 20, 'display.max_colwidth': 50}
Définissez les valeurs des options en fonction du dictionnaire des noms d’éléments et de la valeur avec les méthodes du dictionnaire, items() et keys().
d = {'display.max_rows': 80,
'display.max_columns': 80,
'display.max_colwidth': 80}
[pd.set_option(k, v) for k, v in d.items()]
print({i: pd.get_option(i) for i in d.keys()})
# {'display.max_rows': 80, 'display.max_columns': 80, 'display.max_colwidth': 80}
Réinitialisez les options aux valeurs par défaut :reset_option()
reset_option() réinitialise les options aux valeurs par défaut.
Vous pouvez spécifier une chaîne de modèle d’expression régulière.
print(pd.options.display.max_rows)
# 80
pd.reset_option('display.max_rows')
print(pd.options.display.max_rows)
# 60
Si plusieurs éléments correspondent, tous les éléments sont réinitialisés.
print(pd.options.display.max_columns)
print(pd.options.display.max_colwidth)
# 80
# 80
pd.reset_option('max_col')
print(pd.options.display.max_columns)
print(pd.options.display.max_colwidth)
# 20
# 50
Par exemple, vous pouvez réinitialiser toutes les options affichées avec le caractère spécial d’expression régulière ^ qui correspond au début.
pd.options.display.max_rows = 100
pd.options.display.max_columns = 100
pd.options.display.max_colwidth = 100
pd.reset_option('^display', silent=True)
print(pd.options.display.max_rows)
print(pd.options.display.max_columns)
print(pd.options.display.max_colwidth)
# 60
# 20
# 50
‘all’ réinitialise tous les éléments.
pd.reset_option('all')
# html.border has been deprecated, use display.html.border instead
# (currently both are identical)
# : boolean
# use_inf_as_null had been deprecated and will be removed in a future
# version. Use `use_inf_as_na` instead.
# /usr/local/lib/python3.6/site-packages/pandas/core/config.py:619: FutureWarning: html.border has been deprecated, use display.html.border instead
# (currently both are identical)
# warnings.warn(d.msg, FutureWarning)
# /usr/local/lib/python3.6/site-packages/pandas/core/config.py:619: FutureWarning:
# : boolean
# use_inf_as_null had been deprecated and will be removed in a future
# version. Use `use_inf_as_na` instead.
# warnings.warn(d.msg, FutureWarning)
Si vous ne souhaitez pas que FutureWarning soit généré, spécifiez silent=True.
pd.reset_option('all', silent=True)
Modifiez temporairement les paramètres avec avec :option_context()
Avec pd.option_context(), les paramètres ne sont modifiés que dans le bloc with.
with pd.option_context('display.max_rows', 100):
print(pd.options.display.max_rows)
# 100
print(pd.options.display.max_rows)
# 60
Il n’est pas réinitialisé à la valeur par défaut, mais revient à la valeur avant le bloc with.
pd.options.display.max_rows = 80
with pd.option_context('display.max_rows', 100):
print(pd.options.display.max_rows)
# 100
print(pd.options.display.max_rows)
# 80
Plusieurs éléments peuvent être modifiés en spécifiant à plusieurs reprises une chaîne de modèle d’expression régulière et une nouvelle valeur comme (pat, val, val, …).
with pd.option_context('display.max_rows', 100, 'display.max_columns', 100):
print(pd.options.display.max_rows)
print(pd.options.display.max_columns)
# 100
# 100
print(pd.options.display.max_rows)
print(pd.options.display.max_columns)
# 80
# 20