137 lines
7.1 KiB
Markdown
137 lines
7.1 KiB
Markdown
---
|
||
title: Pandas
|
||
author: Steve Kossouho
|
||
---
|
||
|
||
# Configurer Pandas
|
||
|
||
----
|
||
|
||
## Personnaliser l'affichage d'un `DataFrame`
|
||
|
||
Par défaut, dans Pandas, afficher un `DataFrame`{.python} fonctionne très bien sur des
|
||
petits jeux de données, typiquement des objets avec quelques colonnes et quelques lignes.
|
||
|
||
Cependant, Pandas est capable de s'ajuster, et lorsque vous devez afficher des jeux
|
||
de données plus conséquents (ex. des dizaines de colonnes ou des milliers de lignes),
|
||
vous allez généralement observer un affichage tronqué.
|
||
|
||
----
|
||
|
||
### Affichage d'un jeu de données de Seaborn
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
# Le jeu de données Iris de Seaborn est disponible directement sur Github
|
||
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
|
||
print(iris)
|
||
```
|
||
|
||
Notez dans cet exemple que malgré la présence de 150 lignes, Pandas n'a affiché que 10
|
||
d'entre elles, à savoir les 5 premières et les 5 dernières.
|
||
|
||
----
|
||
|
||
Il est possible d'afficher l'intégralité du `DataFrame`{.python} en utilisant une méthode
|
||
`.to_string(...)`{.python}, qui exporte par défaut le contenu intégral dans une chaîne de
|
||
caractères :
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
# Le jeu de données Iris de Seaborn est disponible directement sur Github
|
||
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
|
||
print(iris.to_string())
|
||
```
|
||
|
||
----
|
||
|
||
### La méthode `to_string()`{.python}
|
||
|
||
Cette méthode, disponible sur les `DataFrame`{.python} et les `Series`{.python}, extrait
|
||
par défaut l'intégralité du document vers une chaîne de caractères, et est configurable
|
||
via un certain nombre d'arguments :
|
||
|
||
[Documentation de `DataFrame.to_string()`{.python}](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_string.html)
|
||
|
||
----
|
||
|
||
La liste des arguments intéressants est la suivante :
|
||
|
||
| Argument | Description | Défaut |
|
||
|-------------------|-------------------------------------------------------------------------------------------------------|--------|
|
||
| `columns` | Liste des colonnes à inclure dans la sortie. | `None` |
|
||
| `col_space` | Largeur minimale de chaque colonne. | `None` |
|
||
| `header` | Écrire les noms des colonnes. | `True` |
|
||
| `index` | Afficher l'index (étiquettes de ligne). | `True` |
|
||
| `index_names` | Afficher les noms des index. | `True` |
|
||
| `max_rows` | Nombre maximum de lignes à afficher. Si `None`, afficher toutes. | `None` |
|
||
| `min_rows` | Nombre de lignes à afficher dans une représentation tronquée. | `None` |
|
||
|
||
----
|
||
|
||
| Argument | Description | Défaut |
|
||
|-------------------|-------------------------------------------------------------------------------------------------------|---------|
|
||
| `max_cols` | Nombre maximum de colonnes à afficher. Si `None`, afficher toutes. | `None` |
|
||
| `show_dimensions` | Afficher les dimensions du DataFrame (nombre de lignes par nombre de colonnes) à la fin du DataFrame. | `False` |
|
||
| `line_width` | Largeur de ligne en caractères pour effectuer un retour à la ligne. | `None` |
|
||
| `max_colwidth` | Largeur maximale de colonne pour tronquer le texte des colonnes individuelles. | `None` |
|
||
|
||
----
|
||
|
||
## Personnaliser l'affichage par défaut
|
||
|
||
Utiliser la méthode `.to_string()`{.python} à chaque affichage de `DataFrame`{.python} peut vite devenir
|
||
rébarbatif, surtout si vous précisez souvent de nombreux arguments. Pandas possède un objet de configuration globale
|
||
qui permet de définir le comportement par défaut de la bibliothèque, notamment en ce qui concerne l'affichage.
|
||
|
||
----
|
||
|
||
### L'objet `options`{.python}
|
||
|
||
Pandas propose une fonction nommée `set_option()`{.python} pour définir des paramètres de fonctionnement
|
||
de la bibliothèque. On préférera directement travailler avec une variable `options`{.python} qui propose
|
||
des attributs et de l'autocomplétion dans votre éditeur préféré (via le package `pandas-stubs`).
|
||
|
||
```python {.numberLines}
|
||
import pandas as pd
|
||
|
||
pd.options.display.width = 160 # caractères max par ligne
|
||
pd.options.display.max_colwidth = 20 # max par colonne
|
||
...
|
||
```
|
||
|
||
[Options disponibles](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.set_option.html#pandas.set_option)
|
||
|
||
----
|
||
|
||
### Options disponibles
|
||
|
||
| Attribut de l'option | Explication succincte |
|
||
|-----------------------------|----------------------------------------------------------------|
|
||
| `display.max_rows` | Nombre maximum de lignes à afficher |
|
||
| `display.max_columns` | Nombre maximum de colonnes à afficher |
|
||
| `display.width` | Largeur maximale de l'affichage en caractères |
|
||
| `display.max_colwidth` | Largeur maximale en caractères pour une colonne |
|
||
| `display.precision` | Nombre de décimales à afficher pour les nombres |
|
||
| `display.float_format` | Format des nombres à virgule flottante |
|
||
| `display.max_seq_items` | Nombre maximum d'éléments d'une séquence à afficher |
|
||
| `display.expand_frame_repr` | Expansion automatique des DataFrames pour remplir la largeur |
|
||
| `display.colheader_justify` | Justification des en-têtes de colonnes (left, right, center) |
|
||
|
||
----
|
||
|
||
| Attribut de l'option | Explication succincte |
|
||
|-----------------------------|----------------------------------------------------------------|
|
||
| `display.show_dimensions` | Afficher les dimensions du DataFrame (True, False, 'truncate') |
|
||
| `display.memory_usage` | Afficher l'utilisation de la mémoire pour les DataFrames |
|
||
| `display.large_repr` | Représentation des grandes DataFrames ('truncate', 'info') |
|
||
| `display.notebook_repr_html` | Utiliser l'HTML pour la représentation dans les notebooks |
|
||
| `display.html.border` | Largeur de la bordure en pixels pour les représentations HTML |
|
||
| `display.min_rows` | Nombre minimum de lignes à afficher |
|
||
| `display.max_info_columns` | Nombre maximum de colonnes à inclure dans la sortie d'info() |
|
||
| `display.max_info_rows` | Nombre maximum de lignes à inclure dans la sortie d'info() |
|
||
| `display.memory_usage` | Afficher l'utilisation de la mémoire (True, False, 'deep') |
|
||
|