5 étapes faciles pour convertir un CSV en un fichier JSON
Vous pouvez convertir un fichier CSV en fichier JSON en suivant les cinq étapes suivantes :
- Importer le
csv
etjson
bibliothèques - Ouvrez le CSV en tant qu'objet fichier en mode lecture à l'aide du
open(path_to_csv, 'r')
fonction dans un gestionnaire de contexte (=with
environnement). - Chargez le contenu CSV dans Python en utilisant le
csv.DictReader(fobj)
et passez l'objet fichier que vous venez de créer. - Itérer sur chaque
row
et mettre à jour un dictionnaire nouvellement créémy_json
en utilisant l'une des valeurs de colonne comme clé :my_json[key] = row
- Stocker le
my_json
données de dictionnaire dans un fichier JSON en utilisant lejson.dumps(my_json)
fonction.
Voici un exemple de code qui convertit le fichier CSV 'my_file.csv'
vers un fichier JSON 'my_file.json'
:
import csv import json csv_file = 'my_file.csv' json_file = 'my_file.json' my_json = {} with open(csv_file, 'r') as fobj: reader = csv.DictReader(fobj) for row in reader: # Use one of the CSV column names as a key key = row['Name'] my_json[key] = row with open(json_file,'w') as fobj: fobj.write(json.dumps(my_json, indent=2))
Notez que vous devez utiliser l'une des colonnes CSV comme clé. Dans cet exemple, nous avons utilisé la colonne 'Name
‘ de notre fichier CSV. Dans votre cas, vous devrez utiliser vos propres en-têtes de colonne.
Fichier CSV d'entrée :
Name,Job,Age,Income
Alice,Programmer,23,110000
Bob,Executive,34,90000
Carl,Sales,45,50000
Fichier JSON de sortie :
{
"Alice": {
"Name": "Alice",
"Job": "Programmer",
"Age": "23",
"Income": "110000"
},
"Bob": {
"Name": "Bob",
"Job": "Executive",
"Age": "34",
"Income": "90000"
},
"Carl": {
"Name": "Carl",
"Job": "Sales",
"Age": "45",
"Income": "50000"
}
}
Vous pouvez l'essayer vous-même dans notre Jupyter Notebook interactif ici :
Python Convertir CSV en JSON avec en-têtes
Le csv.DictReader()
L'approche présentée précédemment suppose que la première ligne du CSV est l'en-tête. Ainsi, la première ligne est utilisée comme en-tête du CSV — par exemple, pour accéder à la clé de ligne spécifique de la colonne 'Name'
en utilisant row['Name']
.
Python Convertir CSV en JSON sans en-têtes
Le csv.DictReader()
L'approche présentée précédemment suppose que la première ligne du CSV est l'en-tête.
Si votre fichier CSV ne contient aucune information d'en-tête sur la première ligne, vous pouvez les définir manuellement à l'aide du fieldnames
argument du csv.DictReader()
méthode qui prend une séquence d'étiquettes de colonne (chaînes).
Voici la syntaxe du DictReader()
méthode :
class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
"Le fieldnames
paramètre est une séquence. Si fieldnames
est omis, les valeurs de la première ligne du fichier f
sera utilisé comme fieldnames
." — Documents
L'extrait de code suivant montre comment convertir le même CSV sans en-têtes à un fichier JSON en définissant des chaînes de colonne personnalisées (en-tête) sous forme de liste ['XXX', 'YYY', 'ZZZ', '---']
:
import csv import json csv_file = 'my_file.csv' json_file = 'my_file.json' my_json = {} with open(csv_file, 'r') as fobj: reader = csv.DictReader(fobj, fieldnames=['XXX', 'YYY', 'ZZZ', '---']) for row in reader: key = row['---'] my_json[key] = row with open(json_file,'w') as fobj: fobj.write(json.dumps(my_json, indent=2))
Voici les fichiers d'entrée et de sortie :
Fichier CSV d'entrée :
Name,Job,Age,Income
Alice,Programmer,23,110000
Bob,Executive,34,90000
Carl,Sales,45,50000
Fichier JSON de sortie :
{
"Income": {
"XXX": "Name",
"YYY": "Job",
"ZZZ": "Age",
"---": "Income"
},
"110000": {
"XXX": "Alice",
"YYY": "Programmer",
"ZZZ": "23",
"---": "110000"
},
"90000": {
"XXX": "Bob",
"YYY": "Executive",
"ZZZ": "34",
"---": "90000"
},
"50000": {
"XXX": "Carl",
"YYY": "Sales",
"ZZZ": "45",
"---": "50000"
}
}
Ou, en capture d'écran :
Vous pouvez voir que la première ligne est maintenant utilisée comme ligne d'entrée CSV normale et non comme en-tête comme dans l'exemple précédent sans spécifier le fieldnames
argument du DictReader()
méthode.
Python Convertir CSV en pandas JSON
Le pandas.to_json()
convertit un objet DataFrame en une chaîne JSON.
La syntaxe de cette méthode est la suivante :
# Syntax to_json() DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=True, indent=None, storage_options=None)
L'exemple suivant lit dans le countries.csv
fichier à un DataFrame. Ce DataFrame est ensuite converti en JSON :
df = pd.read_csv('countries.csv').head() result = df.to_json(indent=4, orient='records', lines=True) print(result)
- La ligne [1] lit dans les cinq (5) premières lignes (tête) du
countries.csv
dossier. La sortie est enregistrée dans un DataFrame (df
). - La ligne [2] fait ce qui suit :
- convertit le DataFrame au format JSON
- formate la sortie en indentant chaque enregistrement de quatre (4) espaces à partir de la gauche
- définit le paramètre orient sur les enregistrements et les lignes sur
True
(voir définition ci-dessus). - enregistre la sortie dans
result
.
- La ligne [3] envoie le résultat au terminal.
Sortie - result
{ "Country":"Germany", "Capital":"Berlin", "Population":83783942, "Area":357021 } |
{ "Country":"France", "Capital":"Paris", "Population":67081000, "Area":551695 } |
{ "Country":"Spain", "Capital":"Madrid", "Population":47431256, "Area":498511 } |
{ "Country":"Italy", "Capital":"Rome", "Population":60317116, "Area":301338 } |
{ "Country":"Poland", "Capital":"Warsaw", "Population":38383000, "Area":312685 } |
Plus de conversions CSV Python
🐍 En savoir plus :J'ai compilé un "guide ultime" sur le blog Finxter qui vous montre la meilleure méthode, respectivement, pour convertir un fichier CSV en JSON, Excel, dictionnaire, Parquet, liste, liste de listes, liste de tuples, fichier texte, DataFrame , XML, tableau NumPy et liste de dictionnaires.
Ouf ! Terminons cet article sur une note plus amusante ! 🙂
Humour de programmeur
Q: How do you tell an introverted computer scientist from an extroverted computer scientist?
A: An extroverted computer scientist looks at your shoes when he talks to you.