En effet, la méthode head affiche uniquement si c’est la dernière ligne de code.
La fonction print en revanche fonctionnera quel que soit son positionnement. Cependant l’affichage avec print est moins « joli ».
Il est donc possible d’utiliser display(df) (ou display(df.head())) qui (comme pour print) fonctionnera quel que soit son positionnement dans le code, et offrira un meilleur affichage que la fonction print.
Merci pour cette réponse plus juste et plus complète…
La méthode head(), en effet, n’est pas une fonction d’affichage, il renvoie une DataFrame et positionné sur la dernière ligne de code, cela affiche son contenu.
Dans les cellules des Notebooks Jupiter, ça marche avec n’importe quelle variable…
Oui la fonction .head(x) ne fait que retourner les x dernières lignes d’un dataframe et dans un notebook jupyter par exemple, le dernier retour est affiché, et si c’est un dataframe, il est formaté.
Cela peut poser problème lorsque l’on veut faire plusieurs affichages formatés dans une même cellule, ou si l’on veut faire quelque chose après avoir affiché notre dataframe avec .head(5) (usuellement)
C’est pourquoi la fonction display est très intéressante par rapport à la fonction print. Elle permet d’afficher et de formatter le dataframe.
(Je souspçonne justement jupyter d’utiliser cette fonction implicitement si la dernière ligne retournée est un dataframe.)
Le code suivant affichera 2 dataframes formattés proprement :
from IPython.display import display
display(df)
foo = 0
display(df.head(5))
bar = 1
Il existe d’autres libraries pour afficher des dataframes, par exemple qgrid, qui permet de filtrer notre dataframe interractivement après affichage, à la manière d’excel.
import qgrid as qg
qg.show_grid(df)
Noter que l’installation de qgrid via conda installe les dépendances et active les extensions jupyter. Avec pip il faudra surement activer les extensions jupyter à la main.