205 votes

Impression jolie d'un dataframe pandas

Comment puis-je imprimer un dataframe pandas sous la forme d'un joli tableau textuel, comme le suivant ?

+------------+---------+-------------+
| column_one | col_two |   column_3  |
+------------+---------+-------------+
|          0 |  0.0001 | ABCD        |
|          1 |  1e-005 | ABCD        |
|          2 |  1e-006 | long string |
|          3 |  1e-007 | ABCD        |
+------------+---------+-------------+

307voto

Romain Points 5623

Je viens de trouver un outil formidable pour ce besoin, il s'appelle tabuler .

Il imprime des données tabulaires et fonctionne avec DataFrame .

from tabulate import tabulate
import pandas as pd

df = pd.DataFrame({'col_two' : [0.0001, 1e-005 , 1e-006, 1e-007],
                   'column_3' : ['ABCD', 'ABCD', 'long string', 'ABCD']})

print(tabulate(df, headers='keys', tablefmt='psql'))

+----+-----------+-------------+
|    |   col_two | column_3    |
|----+-----------+-------------|
|  0 |    0.0001 | ABCD        |
|  1 |    1e-05  | ABCD        |
|  2 |    1e-06  | long string |
|  3 |    1e-07  | ABCD        |
+----+-----------+-------------+

Note :

Pour supprimer les indices de ligne pour tous les types de données, passez la commande showindex="never" o showindex=False .

96voto

coldspeed Points 111053

Pandas >= 1.0

Si vous voulez une fonction intégrée pour transférer vos données dans un fichier markdown de Github, vous l'avez maintenant. Jetez un coup d'œil à to_markdown :

df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])  
print(df.to_markdown()) 

|    |   A |   B |
|:---|----:|----:|
| a  |   1 |   1 |
| a  |   2 |   2 |
| b  |   3 |   3 |

Voici à quoi cela ressemble sur github :

enter image description here

Notez que vous devrez toujours avoir le tabulate installé.

45voto

Mark Andersen Points 33

Si vous êtes dans le Jupyter notebook, vous pouvez exécuter le code suivant pour afficher de manière interactive le dataframe dans un tableau bien formaté.

Cette réponse s'appuie sur la réponse to_html('temp.html') ci-dessus, mais au lieu de créer un fichier, elle affiche le tableau bien formaté directement dans le carnet de notes :

from IPython.display import display, HTML

display(HTML(df.to_html()))

Le crédit pour ce code est dû à l'exemple à : Afficher un DataFrame sous forme de tableau dans iPython Notebook

42voto

ErichBSchulz Points 1058

Une approche simple consiste à produire une sortie au format html, qui Les pandas sortent de la boîte :

df.to_html('temp.html')

15voto

Ofer Points 178

Vous pouvez utiliser jolie table pour rendre le tableau sous forme de texte. L'astuce est de convertir le data_frame en un fichier csv en mémoire et de le faire lire par prettytable. Voici le code :

from StringIO import StringIO
import prettytable    

output = StringIO()
data_frame.to_csv(output)
output.seek(0)
pt = prettytable.from_csv(output)
print pt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X