Python >> Tutoriel Python >  >> Python

Comment joliment imprimer des tableaux en Python

Voulez-vous que vos données tabulaires soient belles en Python ? Il existe quelques bibliothèques utiles pour faire le travail.

Dans cet article, nous allons vous montrer quelques bibliothèques utiles pour imprimer et formater un tableau en Python rapidement, facilement et d'une manière visuellement attrayante - c'est-à-dire une jolie impression. Avec peu d'effort, vos tableaux seront prêts pour une publication en ligne, un rapport d'analyse ou un article scientifique.

Python est devenu l'un des langages incontournables pour l'analyse de données. Il est puissant et flexible. Sa syntaxe claire et facile à comprendre en fait un excellent langage à apprendre, même pour les débutants. Le grand nombre de bibliothèques open source fournit des fonctionnalités pour tout, du grattage, du nettoyage et de la manipulation des données à la visualisation et à l'apprentissage automatique.

Cet article s'adresse aux programmeurs et analystes de données plus expérimentés. Si vous êtes débutant, voici un excellent cours qui vous mettra sur la bonne voie.

Commençons par jeter un œil à quelques méthodes rapides et sales pour imprimer des tableaux en Python pour les moments où vous êtes pressé.

Impression pas si jolie

Lors de la phase d'analyse exploratoire des données, vous avez raison de ne pas trop vous soucier de l'esthétique. Cela n'a aucun sens de perdre votre temps à produire de beaux graphiques et tableaux. Au lieu de cela, vous êtes simplement intéressé par la compréhension des données.

Il existe quelques techniques rapides pour imprimer un tableau en Python. Le premier est le formatage de chaîne avec la méthode format(). Disons que vous avez des données tabulaires stockées dans une liste de listes. Cela peut être rapidement imprimé ligne par ligne comme indiqué ci-dessous :

table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
for row in table:
    print('| {:1} | {:^4} | {:>4} | {:<3} |'.format(*row))

Cette méthode est rapide à mettre en œuvre et facile à comprendre mais présente quelques inconvénients. La plus évidente est que vous devez connaître et définir la largeur de chaque colonne, donnée par les entiers dans le print() fonction. Vous pouvez surmonter cela en écrivant du code pour trouver la longueur maximale des nombres dans chaque colonne, mais cela commence à ajouter de la complexité à ce qui devrait être un travail rapide.

Notez que les deuxième, troisième et quatrième colonnes sont centrées, alignées à droite et alignées à gauche, respectivement. Ceci est contrôlé par le ^ , > , et < personnages. Au-delà de cela, cependant, vous avez peu de contrôle sur la façon d'imprimer le tableau.

Une autre option est la bibliothèque pandas, qui est devenue l'épine dorsale de l'analyse de données en Python. Si vous sentez que vous avez besoin d'améliorer un peu votre jeu de pandas, voici un article sur l'utilisation des trames de données. Il est simple de convertir un tableau en bloc de données et d'imprimer le contenu :

import pandas as pd
table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
df = pd.DataFrame(table, columns = ['a', 'b', 'c', 'd'], index=['row_1', 'row_2'])
print(df)

C'est plus simple que la première méthode puisque vous n'avez pas à définir les largeurs de colonne ou le formatage. Et il offre une option pour étiqueter les colonnes et les lignes pour plus de clarté.

Il est possible de personnaliser l'apparence d'un bloc de données imprimé, mais c'est fastidieux. Vous pouvez utiliser pd.set_option() pour configurer des éléments tels que l'alignement et la largeur des colonnes, mais cela peut rapidement ajouter de nombreuses lignes à votre programme. Le nombre de lignes pouvant être affichées est également limité par un nombre fixe par défaut, vous devez donc définir le display.max_rows option à df.shape[0]+1 pour les voir tous.

Jolie impression

Lorsque vous avez terminé la phase d'analyse exploratoire des données, vous souhaiterez peut-être améliorer l'apparence de vos tableaux. Deux bibliothèques fournissent la fonctionnalité permettant d'imprimer joliment des valeurs séparées par des virgules (CSV) en Python :tabulate et prettytable. Ceux-ci ne sont pas fournis en standard avec Python, vous devez donc les installer avec une commande d'installation rapide pip.

En parlant de données CSV, si vous voulez apprendre à lire et écrire dans ce format de données, consultez cet article. Nous avons également des informations sur la lecture et l'écriture de fichiers Excel en Python, qu'il est également utile de connaître.

tableau

La bibliothèque tabulate prend en charge quelques types de données différents, notamment des listes de listes, des tableaux NumPy et des trames de données pandas, entre autres. Une fois installé, il vous suffit d'appeler la bibliothèque et de transmettre vos données à la fonction de tabulation comme indiqué ci-dessous :

from tabulate import tabulate
table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
print(tabulate(table))

Ce n'est pas encore particulièrement joli, mais pour passer d'ici à quelque chose de plus attrayant visuellement, il suffit de définir quelques paramètres optionnels. Si votre tableau a un en-tête, vous pouvez le définir avec le mot-clé headers, et vous pouvez définir le tablefmt mot-clé pour changer l'apparence.

Vous avez le choix entre de nombreuses options. Pour les moments où vous vous sentez un peu fantaisiste, vous pouvez essayer ce qui suit :

table = [['col 1', 'col 2', 'col 3', 'col 4'], [1, 2222, 30, 500], [4, 55, 6777, 1]]
print(tabulate(table, headers='firstrow', tablefmt='fancy_grid'))

Une fonctionnalité intéressante de cette bibliothèque est le grand nombre de formats prédéfinis pour aider à publier des tableaux de différentes manières. Par exemple, le mediawiki Le format fournit le balisage de tableau utilisé dans Wikipédia, ce qui est pratique si vous envisagez d'écrire ou de modifier une page Wikipédia. Pour les rapports d'analyse ou les publications scientifiques, il existe différents formats latex ainsi qu'un support pour la publication de tableaux dans le logiciel de gestion de projet populaire Jira ou sur GitHub. Voici un exemple montrant comment vous pouvez utiliser une ligne de Python pour préparer des données tabulaires à publier en ligne en utilisant le html format :

>>> print(tabulate(table, headers='firstrow', tablefmt='html'))
<table>
<thead>
<tr><th style="text-align: right;">  col 1</th><th style="text-align: right;">  col 2</th><th style="text-align: right;">  col 3</th><th style="text-align: right;">  col 4</th></tr>
</thead>
<tbody>
<tr><td style="text-align: right;">      1</td><td style="text-align: right;">   2222</td><td style="text-align: right;">     30</td><td style="text-align: right;">    500</td></tr>
<tr><td style="text-align: right;">      4</td><td style="text-align: right;">     55</td><td style="text-align: right;">   6777</td><td style="text-align: right;">      1</td></tr>
</tbody>
</table>

joli

La bibliothèque jolietable fournit une solution alternative avec des fonctionnalités uniques. Nous utiliserons le PrettyTable() classe pour définir, modifier et imprimer des tables en Python.

Voici comment définir un objet table avec les informations d'en-tête, puis ajouter plusieurs lignes à la fois en utilisant le add_rows() méthode :

from prettytable import PrettyTable
table = [['col 1', 'col 2', 'col 3', 'col 4'], [1, 2222, 30, 500], [4, 55, 6777, 1]]
tab = PrettyTable(table[0])
tab.add_rows(table[1:])

À partir de là, vous pouvez simplement print() le tableau pour le visualiser sous forme ASCII, ou vous pouvez utiliser les nombreuses méthodes disponibles pour modifier et formater les données tabulaires. Pour ajouter une seule ligne, il y a le add_row() méthode; pour ajouter une colonne, utilisez le add_column() méthode. Ce dernier a deux arguments obligatoires :une chaîne pour définir fieldname et une liste ou un tuple comme colonne. Vous pouvez également définir les alignements horizontaux et verticaux comme indiqué dans l'exemple suivant :

tab.add_column('col 5', [-123, 43], align='r', valign='t')
print(tab)

Dans de nombreux cas, vos données tabulaires sont enregistrées dans un fichier CSV ou une base de données. Le prettytable La bibliothèque est livrée avec la fonctionnalité permettant de lire des données à partir d'une source externe telle qu'un CSV, comme indiqué ci-dessous :

from prettytable import from_csv
with open('data_file.csv') as table_file:
    tab = from_csv(table_file)

Pour les bases de données avec une bibliothèque Python conforme à Python DB-API - une base de données SQLite, par exemple - vous pouvez définir un objet curseur puis construire une table en utilisant le from_db_cursor() fonction de prettytable . Pour ce faire, vous n'avez besoin que d'environ 4 lignes de code Python.

L'un des avantages de cette bibliothèque est la possibilité de modifier les données tabulaires. Une autre est la fonctionnalité supplémentaire qui vous permet de contrôler les données à afficher à partir du tableau. Utilisation du get_string() méthode avec le fields L'argument vous permet de contrôler quelles colonnes sont affichées. De même, le start et les arguments de fin vous permettent de définir les index des lignes que vous souhaitez afficher. Cette méthode contient également le sortby mot-clé, qui vous permet de trier vos données tabulaires par une colonne particulière.

Comme le tabulate bibliothèque, le prettytable La bibliothèque est également livrée avec des formats prédéfinis pour aider à publier des tableaux de différentes manières. Vous pouvez publier dans un style compatible avec Microsoft Word, par exemple, et il existe des formats pour JSON et HTML avec des options de personnalisation. Si vous souhaitez apprendre à traiter des données dans différents formats de fichiers, y compris CSV et JSON, consultez ce cours.

Si vous souhaitez un contrôle plus précis sur l'affichage des données tabulaires, vous pouvez également spécifier les propriétés manuellement. Examinons un exemple plus complexe de configuration de données tabulaires en Python :

from prettytable import ALL, FRAME
tab = PrettyTable(table[0])
tab.add_rows(table[1:])
tab.hrules = ALL
tab.vrules = FRAME
tab.int_format = '8'
tab.padding_width = 2
tab.junction_char = '.'
tab.sortby = 'col 2'
print(tab)

Réflexions finales sur la jolie impression de données tabulaires en Python

Nous avons exploré différentes manières d'afficher des données tabulaires en Python. Que vous recherchiez une représentation rapide et grossière pour vous aider à comprendre vos données ou que vous prépariez votre tableau pour publication en ligne ou dans une revue scientifique, les méthodes décrites ici vous fournissent les outils pour commencer.

Mais il y a toujours plus à découvrir que ce que nous pouvons couvrir dans un article. Nous vous encourageons à expérimenter avec les extraits de code et à commencer à créer une belle visualisation de vos données tabulaires en Python.

Si vous cherchez plus de matériel sur l'utilisation de Python pour la science des données, consultez ce cours. Il comprend des leçons et des exercices utiles pour vous aider à devenir un meilleur data scientist. Bon codage !


Post précédent