Python >> Tutoriel Python >  >> Python

Comment convertir des tuples en un fichier CSV en Python [4 façons]

Problème :Comment convertir un ou plusieurs tuples en un csv dossier?

Exemple  :Donné est un tuple ou une liste de tuples, par exemple, les données salariales des employés d'une entreprise donnée :

salary = [('Alice', 'Data Scientist', 122000),
          ('Bob', 'Engineer', 77000),
          ('Ann', 'Manager', 119000)]

Votre objectif est d'écrire le contenu de la liste de tuples dans un format de fichier de valeurs séparées par des virgules (CSV). Votre fichier de sortie devrait ressembler à ceci :

# file.csv
Alice,Data Scientist,122000
Bob,Engineer,77000
Ann,Manager,119000

Notez que l'écriture d'un tuple unique vers un CSV est un sous-problème d'écrire tuples multiples à un CSV qui peut être facilement résolu en transmettant une liste avec un seul tuple comme entrée à n'importe quelle fonction dont nous parlerons dans l'article.

Solution : Il existe quatre façons simples de convertir une liste de tuples en un fichier CSV en Python.

  1. CSV :Importer le csv module en Python, créez un objet écrivain csv et écrivez la liste des tuples dans le fichier en utilisant le writerows() méthode sur l'objet écrivain.
  2. Pandas  :importez la bibliothèque pandas, créez un Pandas DataFrame et écrivez le DataFrame dans un fichier à l'aide de la méthode DataFrame DataFrame.to_csv('file.csv') .
  3. NumPy  :importez la bibliothèque NumPy, créez un tableau NumPy et écrivez la sortie dans un fichier CSV en utilisant le numpy.savetxt('file.csv', array, delimiter=',') méthode.
  4. Python  :utilisez une implémentation Python pure qui ne nécessite aucune bibliothèque en utilisant la fonctionnalité d'E/S de fichier Python.

Ma préférence est la méthode 2 (Pandas ) car il est le plus simple à utiliser et le plus robuste pour différents types d'entrées (numériques ou textuelles).

🧩 Essayez-le vous-même : Avant de plonger dans ces méthodes plus en détail, n'hésitez pas à jouer avec elles dans notre shell de code interactif. Cliquez simplement sur le bouton "Exécuter" et recherchez les fichiers CSV générés dans l'onglet "Fichiers".

Voulez-vous développer les compétences d'un professionnel Python complet —tout en étant payé dans le processus ? Devenez freelance Python et commandez votre livre Leaving the Rat Race with Python sur Amazon (Kindle/Print ) !

Méthode 1 :Module CSV de Python

Vous pouvez facilement convertir une liste de tuples en un fichier CSV en Python en utilisant le csv bibliothèque. C'est la plus personnalisable des quatre méthodes.

salary = [('Alice', 'Data Scientist', 122000),
          ('Bob', 'Engineer', 77000),
          ('Ann', 'Manager', 119000)]

# Method 1
import csv
with open('file.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(salary)

Sortie :

# file.csv
Alice,Data Scientist,122000
Bob,Engineer,77000
Ann,Manager,119000

Dans le code, vous ouvrez d'abord le fichier en utilisant le standard Python open() commande. Maintenant, vous pouvez écrire du contenu dans l'objet fichier f .

Ensuite, vous transmettez cet objet fichier au constructeur du rédacteur CSV qui implémente une méthode d'assistance supplémentaire et encapsule efficacement l'objet fichier en vous fournissant de nouvelles fonctionnalités spécifiques à CSV telles que le writerows() méthode.

Vous passez maintenant une liste de tuples au writerows() méthode du rédacteur CSV qui se charge de convertir la liste des tuples au format CSV.

Vous pouvez personnaliser le rédacteur CSV dans son constructeur (par exemple, en modifiant le délimiteur à partir d'une virgule ',' à un espace blanc ' ' personnage). Consultez les spécifications pour en savoir plus sur les modifications avancées.

Méthode 2 :Pandas DataFrame to_csv()

Vous pouvez convertir un tuple ou une liste de tuples en un Pandas DataFrame qui vous offre des fonctionnalités puissantes telles que le to_csv() méthode. C'est la méthode la plus simple et cela vous permet d'éviter d'importer encore une autre bibliothèque (J'utilise de toute façon Pandas dans de nombreux projets Python).

salary = [('Alice', 'Data Scientist', 122000),
          ('Bob', 'Engineer', 77000),
          ('Ann', 'Manager', 119000)]

# Method 2
import pandas as pd
df = pd.DataFrame(salary)
df.to_csv('file2.csv', index=False, header=False)

Sortie :

# file2.csv
Alice,Data Scientist,122000
Bob,Engineer,77000
Ann,Manager,119000

Vous créez un Pandas DataFrame, qui est la représentation par défaut de Python des données tabulaires. Considérez-le comme une feuille de calcul Excel dans votre code (avec des lignes et des colonnes).

Le DataFrame est une structure de données très puissante qui vous permet d'effectuer diverses méthodes. L'un d'eux est le to_csv() méthode qui vous permet d'écrire son contenu dans un fichier CSV.

Vous définissez le index et header arguments du to_csv() méthode à False car Pandas, par défaut, ajoute des indices entiers de ligne et de colonne 0, 1, 2, ….

Encore une fois, considérez-les comme les indices de ligne et de colonne dans votre feuille de calcul Excel. Vous ne voulez pas qu'ils apparaissent dans le fichier CSV, vous définissez donc les arguments sur False .

Si vous souhaitez personnaliser la sortie CSV, vous avez beaucoup d'arguments spéciaux avec lesquels jouer. Consultez cet article pour une liste complète de tous les arguments.

Article connexe :Pandas Cheat Sheets à épingler sur votre mur

Méthode 3 :NumPy savetext()

NumPy est au cœur des fonctionnalités de science des données et d'apprentissage automatique de Python. Même Pandas utilise des tableaux NumPy pour implémenter des fonctionnalités critiques.

Vous pouvez convertir une liste de tuples en un fichier CSV en utilisant le savetext() de NumPy fonction et en passant le tableau NumPy comme argument résultant de la conversion de la liste de tuples.

Cette méthode est préférable si vous n'avez que des données numériques, sinon cela entraînera des conversions de types de données compliquées qui ne sont pas recommandées.

a = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]

# Method 3
import numpy as np
a = np.array(a)
np.savetxt('file3.csv', a, delimiter=',')

Sortie :

# file3.csv
1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00
4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00
7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00

La sortie n'a pas l'air jolie :elle stocke les valeurs sous forme de flottants. Mais pas de soucis, vous pouvez reformater la sortie en utilisant l'argument de format fmt du savetxt() méthode (plus ici). Cependant, je vous recommande de vous en tenir à la méthode 2 (Pandas) pour éviter une complexité inutile dans votre code.

Méthode 4 :Python pur sans dépendances externes

Si vous ne souhaitez importer aucune bibliothèque et convertir une liste de tuples dans un fichier CSV, vous pouvez également utiliser l'implémentation Python standard :ce n'est pas compliqué et efficace. Cependant, si possible, vous devez vous fier aux bibliothèques qui font le travail pour vous.

Cette méthode est préférable si vous n'utilisez pas ou ne pouvez pas utiliser de dépendances externes.

salary = [('Alice', 'Data Scientist', 122000),
          ('Bob', 'Engineer', 77000),
          ('Ann', 'Manager', 119000)]

# Method 4
with open('file4.csv','w') as f:
    for row in salary:
        for x in row:
            f.write(str(x) + ',')
        f.write('\n')

Sortie :

# file4.csv
Alice,Data Scientist,122000,
Bob,Engineer,77000,
Ann,Manager,119000,

Dans le code, vous ouvrez d'abord l'objet fichier f . Ensuite, vous parcourez chaque ligne et chaque élément de la ligne et écrivez l'élément dans le fichier, un par un. Après chaque élément, vous placez la virgule pour générer le format de fichier CSV. Après chaque ligne, vous placez le caractère de saut de ligne '\n' .

Remarque :pour se débarrasser de la virgule finale, vous pouvez vérifier si l'élément x est le dernier élément de la ligne dans le corps de la boucle et ignorez la virgule si c'est le cas.

Connexe :Rejoignez la communauté Finxter et téléchargez vos 8+ feuilles de triche Python pour rafraîchir votre compréhension du code.

Vidéo associée

La vidéo suivante montre comment convertir une liste de listes en CSV en Python, la conversion d'un tuple ou d'une liste de tuples sera similaire :