Convertir des données Excel en JSON avec python

Aperçu

Convertissez des données Excel en JSON avec python.

Les données Excel à convertir proviennent du Tableau des ingrédients des normes alimentaires japonaises. Je souhaite utiliser le fichier Excel Fruit suivant. (Cliquez pour télécharger le fichier.) https://www.mext.go.jp/component/a_menu/science/detail/__icsFiles/afieldfile/2016/01/15/1365344_1-0207r.xlsx

J'essaierai deux méthodes, ʻexcel2json et ʻopenpyxl. (ʻExcel2json` ne fonctionne pas bien.)

Méthode 1 Utiliser excel2json

excel2json est un module qui convertit des données Excel en JSON avec python, mais ses fonctions sont très limitées. Il n'y a pas d'autre choix que de lire Excel et de créer un fichier json.

Je vais l'installer pour le moment. Notez que si vous n'entrez pas le «-3» de fin, un autre module sera installé.

$ pip install excel2json-3

Utilisons-le une fois qu'il est installé. C'est le seul code

excel2json.py


from excel2json import convert_from_file

convert_from_file("CHEMIN du fichier Excel que vous souhaitez convertir")

Une fois exécuté, un fichier json sera généré dans le même répertoire que le fichier Excel. Le nom du fichier json est le nom de la feuille Excel (fixe).

Lorsque j'ai mis le fichier Excel téléchargé tel quel et que je l'ai exécuté, le fichier json n'a pas pu être créé avec succès, supprimez donc la partie supplémentaire de la table et réessayez.

Le fichier Excel modifié ressemble à ceci ↓ image.png

Lorsque j'ouvre le fichier json créé et que je vois ...

{
    "\u98df\u54c1\u7fa4": "07",
    "\u98df\u54c1\u756a\u53f7": "07001",
    "\u7d22\u5f15\u756a\u53f7": 751.0,
    ...
}

C'est devenu unicode comme ça. Quand j'ai essayé de le réparer avec l'extension appelée "encode decode" de vscode, c'est devenu comme ça.

{
    "Groupe alimentaire": "07",
    "Numéro d'aliment": "07001",
    "Numéro d'index": 751.0,
    ...
}

Si la quantité de code est faible et que les données sont déjà en place, cela peut être fait très facilement, mais c'est un peu gênant car vous ne pouvez pas spécifier les données à acquérir. En ce qui concerne le code de caractère, je n'ai trouvé aucune méthode autre que celle ci-dessus, je vais donc essayer d'autres méthodes pour le moment.

Méthode 2 Utilisez openpyxl

openpyxl est un module d'exploitation d'Excel en python. Tout d'abord, installez openpyxl

$ pip install openpyxl

J'essaierai de l'utiliser une fois qu'il sera installé.

Veuillez noter que le fichier excell est le même que celui téléchargé. Cette fois, nous allons acquérir 7 éléments: numéro de l'aliment, nom de l'aliment, fibres alimentaires, potassium, fer, vitamine B1 et vitamine C.

Cliquez ici pour le code
import openpyxl
import json

load_book = openpyxl.load_workbook('excel fichier PATH')
sheet = load_book['07 Fruits']
json_path = 'json fichier PATH'

fruits_list = [{
    "food_id": 0,
    "name": ""
}]
for i in range(9, 183):
    food_id = sheet.cell(row = i, column = 2).value
    name = sheet.cell(row = i, column = 4).value
    dietary_fiber = sheet.cell(row = i, column = 21).value
    potassium = sheet.cell(row = i, column = 24).value
    iron = sheet.cell(row = i, column = 28).value
    vitamin_b1 = sheet.cell(row = i, column = 48).value
    vitamin_c = sheet.cell(row = i, column = 56).value

    food_id = int(food_id)

    if dietary_fiber == 'Tr':
        dietary_fiber = 0
    if potassium == 'Tr':
        potassium = 0
    if iron == 'Tr':
        iron = 0
    if vitamin_b1 == 'Tr':
        vitamin_b1 = 0
    if vitamin_c == 'Tr':
        vitamin_c = 0

    if name.split(" ")[0][0] == '(' or name.split(" ")[0][0] == '(':
        name = name.split(" ")[1]
    else:
        name = name.split(" ")[0]
    
    if fruits_list[-1]['name'] != name:
        fruits_list.append({
            "food_id": food_id,
            "name": name,
            "dietary_fiber": dietary_fiber,
            "potassium": potassium,
            "iron": iron,
            "vitamin_b1": vitamin_b1,
            "vitamin_c": vitamin_c,
        })
    
fruits_list.pop(0)

data_dict = {
    "data": "fruits",
    "fruits": fruits_list
}

with open(json_path, mode = 'w', encoding = 'utf-8') as f:
    f.write(json.dumps(data_dict, ensure_ascii = False, indent = 4))

Je vais expliquer la partie liée à l'article.

import openpyxl
import json

load_book = openpyxl.load_workbook('excel fichier PATH')
sheet = load_book['nom de la feuille']
json_path = 'json fichier PATH'

Puisque je veux utiliser openpyxl et json, j'importe également le module json. Lisez le fichier Excel avec ʻopenpyxl.load_workbook () et récupérez la feuille avec load_book ['nom de la feuille'] `.

food_id = sheet.cell(row = 1, column = 2).value

Obtenez les données en spécifiant les cellules d'Excel en lignes et en colonnes. Avec ce code, nous obtenons 1 ligne et 2 colonnes de données.

fruits_list.append({
    "food_id": food_id,
    "name": name,
    "dietary_fiber": dietary_fiber,
    "potassium": potassium,
    "iron": iron,
    "vitamin_b1": vitamin_b1,
    "vitamin_c": vitamin_c,
})

Collectez les données acquises dans un dictionnaire et ajoutez-les au tableau.

data_dict = {
    "data": "fruits",
    "fruits": fruits_list
}

with open(json_path, mode = 'w', encoding = 'utf-8') as f:
    f.write(json.dumps(data_dict, ensure_ascii = False, indent = 4))

Enfin, convertissez les données précédentes dans un dictionnaire et écrivez-le dans le fichier json. ʻOpen () `` mode = 'a'` spécifie que le fichier doit être ouvert en mode écriture. Au fait, si «mode» est «r», il sera en mode lecture, et si c'est «a», il sera en mode ajout.

Résumé

Recommended Posts

Convertir des données Excel en JSON avec python
Convertir json en Excel
Convertissez des données FX 1 minute en données 5 minutes avec Python
Lire des données json avec python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Convertir la liste en DataFrame avec python
Excel avec Python
Convertir un mémo à la fois avec Python 2to3
Convertir Hiragana en Romaji avec Python (bêta)
Convertir un tableau (struct) en json avec golang
Convertir des nombres chinois en nombres arabes avec Python
Exemple de conversion en ondelettes d'images en Python
Analyse de données avec python 2
[Python] Utiliser JSON avec Python
Convertir 202003 en 2020-03 avec les pandas
Gérez Excel avec python
Analyse de données avec Python
Utiliser Excel avec Python (1)
Utiliser Excel avec Python (2)
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Convertir un PDF en image (JPEG / PNG) avec Python
Convertir le «nombre» de date Excel en date / heure Python
Convertissez des PDF en images en masse avec Python
[Python] Comment lire des fichiers Excel avec des pandas
Convertir un fichier svg en png / ico avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
J'ai essayé d'obtenir des données CloudWatch avec Python
[Introduction à Python] Comment gérer les données au format JSON
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Conversion par lots de fichiers Excel en JSON [Python]
Convertir les données au format json en txt (en utilisant yolo)
Convertir une chaîne au format de liste caractère par caractère avec python
Exemple de données créées avec python
Connectez-vous à BigQuery avec Python
Comment convertir / restaurer une chaîne avec [] en python
Je convertis les données AWS JSON en CSV comme ceci
Graphique des données Excel avec matplotlib (1)
[python] Convertir la date en chaîne
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Comment récupérer des données d'image de Flickr avec Python
POST json avec le script Python 3
Obtenez des données Youtube avec python
Convertir les données csv, tsv en une matrice avec MovieLens en utilisant python comme exemple
Publiez sur Slack avec Python 3
Note de lecture: Introduction à l'analyse de données avec Python
Convertissez l'image au format .zip en PDF avec Python
Graphique des données Excel avec matplotlib (2)
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Mémorandum PyInstaller Convertit Python [.py] en [.exe] avec 2 lignes
Convertir / renvoyer des objets de classe au format JSON en Python
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Comment convertir des fichiers Json au format CSV ou au format EXCEL
Formater json avec Vim (avec python)
Convertir le code python 3.x en python 2.x