Comment puis-je imprimer un dataframe pandas comme un joli tableau textuel, comme suit?
+------------+---------+-------------+
| column_one | col_two | column_3 |
+------------+---------+-------------+
| 0 | 0.0001 | ABCD |
| 1 | 1e-005 | ABCD |
| 2 | 1e-006 | long string |
| 3 | 1e-007 | ABCD |
+------------+---------+-------------+
tabulate([list(row) for row in df.values], headers=list(df.columns))
pour vous débarrasser de l'indexprint(tabulate(df, **kwargs))
et pas simplementtabulate(df, **kwargs)
; ce dernier affichera toutes les nouvelles lignes\n
....showindex=False
Une approche simple consiste à générer une sortie au format HTML, ce que les pandas font dès la sortie de la boîte :
la source
pandas> = 1.0
Si vous voulez une fonction intégrée pour vider vos données dans un markdown github, vous en avez maintenant un. Jetez un œil à
to_markdown
:Voici à quoi cela ressemble sur github:
Notez que vous devrez toujours
tabulate
installer le package.la source
Si vous êtes dans le bloc-notes Jupyter, 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, la table bien formatée s'affiche directement dans le bloc-notes:
Crédit pour ce code en raison de l'exemple sur: Afficher DataFrame en tant que table dans iPython Notebook
la source
Vous pouvez utiliser prettytable pour rendre le tableau sous forme de texte. L'astuce consiste à convertir le data_frame en fichier csv en mémoire et à le faire lire par prettytable. Voici le code:
la source
prettytable
est largement considéré comme abandonware. Dommage aussi, car c'était un joli paquet. :(prettytable
n'a pas eu de sortie depuis le 6 avril 2013.tabulate
est son prédécesseur spirituel et a des versions régulières, la plus récente étant le 24 janvier 2019.J'ai utilisé la réponse d'Ofer pendant un certain temps et l'ai trouvée excellente dans la plupart des cas. Malheureusement, en raison des incohérences entre la to_csv de pandas géants et prettytable de from_csv, je devais utiliser prettytable d'une manière différente.
Un cas d'échec est un dataframe contenant des virgules:
Prettytable lève une erreur du formulaire:
La fonction suivante gère ce cas:
Si vous ne vous souciez pas de l'index, utilisez:
la source
format_for_print()
fonction ne semble pas imprimer l'index du Pandas DataFrame. J'ai défini l'index en utilisantdf.index.name = 'index'
mais cela n'imprime pas la colonne d'index avec un nom.Suite à la réponse de Mark, si vous n'utilisez pas Jupyter pour une raison quelconque, par exemple si vous voulez faire des tests rapides sur la console, vous pouvez utiliser la
DataFrame.to_string
méthode, qui fonctionne à partir - au moins - de Pandas 0.12 (2014) .la source
Peut-être que vous cherchez quelque chose comme ça:
la source
Je voulais une impression papier d'un dataframe mais je voulais aussi ajouter quelques résultats et commentaires sur la même page. J'ai travaillé sur ce qui précède et je n'ai pas pu obtenir ce que je voulais. J'ai fini par utiliser les instructions file.write (df1.to_csv ()) et file.write (",,, blah ,,,,,, blah") pour obtenir mes extras sur la page. Lorsque j'ai ouvert le fichier csv, il est allé directement à une feuille de calcul qui a tout imprimé dans le bon rythme et le bon format.
la source