L'histoire lorsqu'un utilisateur Python passe un fichier JSON

Calendrier de l'Avent Fringe81 2019, article du 12ème jour.

Cette fois, j'écrirai une petite histoire dont les gens qui n'ont touché que Python (comme moi) auront besoin en pratique. Comme le titre l'indique, il s'agit d'une histoire lors de la transmission de données sous forme de fichier JSON à un ingénieur avant après avoir compressé les données avec Python.

Préparation des données

Par exemple, je veux créer un écran pour me présenter aux nouveaux employés! À ce stade, supposons que vous souhaitiez des données sous la forme suivante (chaque donnée est comme un fichier CSV, on suppose donc qu'elles sont individuelles).

interface Member {
    id: string;
    name: string;
    profile: {
        age: number;
        height: number;
        weight: number:
    };
    likes: {
        name: string;
        reason: string;
    }[];
}[];

Je pense que les nouveaux arrivants qui ne peuvent utiliser que Python peuvent organiser cela avec des pandas et le sortir. Préparez d'abord les données.

import pandas as pd

#Les données suivantes supposent qu'il existe un fichier séparé et qu'il correspond à l'état lu par les pandas
df1 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "name": ["Monsieur A", "Monsieur B", "Monsieur C"]
    }
)
df2 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "age": [22, 24, 27],
        "height": [177, 171, 167],
        "weight": [64, 57, 62]
    }
)
df3 = pd.DataFrame(
    {
        "id": ["01", "02", "03"],
        "name": ["Sushi / Golf", "Baseball / caméra", "Canard, villageois, guerrier"],
        "reason": ["Parce que c'est délicieux et c'est rafraîchissant", "Parce que c'est excitant et je veux le garder dans ma mémoire", "Parce que c'est mignon, c'est gentil, c'est cool"]
    }
)

Le contenu des données ressemble à ceci.

df1
id name
0 01 M. A
1 02 M. B
2 03 M. C
df2
id age height weight
0 01 22 177 64
1 02 24 171 57
2 03 27 167 62
df3
id name reason
0 01 Sushi / Golf Parce que c'est délicieux et rafraîchissant
1 02 Baseball / Caméra Parce que c'est excitant et que je veux le garder dans ma mémoire
2 03 Canard / Villageois / Guerrier Parce que c'est mignon, parce que c'est gentil, parce que c'est cool

Mise en forme des données

Ensuite, nous formaterons les données. Pour le moment, façonnez-le et combinez-le en un seul bloc de données.

#mise en forme df2
# "profile"Entrez ce qui est résumé dans le dictionnaire dans la colonne
df2["profile"] = df2.apply(lambda row: {"age": row["age"], "height": row["height"], "weight": row["weight"]}, axis=1)
df2 = df2[["id", "profile"]]

#mise en forme df3
#Divisez le texte séparé par "・" et incluez-le dans un type de liste
# "likes"Entrez ce qui est résumé dans le dictionnaire dans la colonne
df3["name"] = df3["name"].str.split("・")
df3["reason"] = df3["reason"].str.split("・")
df3["likes"] = df3.apply(lambda row: [{"name": name, "reason": reason} for name, reason in zip(row["name"], row["reason"])], axis=1)
df3 = df3[["id", "likes"]]

#Combiner des données
df = df1.merge(df2, on="id").merge(df3, on="id")

Le contenu est comme ça.

df
id name profile likes
0 01 M. A {'age': 22, 'height': 177, 'weight': 64} [{'name': 'sushi', 'reason': 'parce que c'est délicieux'}, {'name': '...
1 02 M. B {'age': 24, 'height': 171, 'weight': 57} [{'name': 'baseball', 'reason': 'parce que ça s'excite'}, {'name': ...
2 03 M. C {'age': 27, 'height': 167, 'weight': 62} [{'nom': 'canard', 'raison': 'parce que c'est mignon'}, {'nom': ...

Sortie de données

Enfin, écrivez les données dans un fichier JSON.

import json

#Créer un dict pour la sortie
#orient est défini de manière à ce que la structure imbriquée dans la liste puisse être enregistrée telle quelle (l'argument ici est important)
output = df.to_dict(orient="records")

#Ouvrez le fichier de destination d'enregistrement et saisissez les données.
with open("introduction.json", "w") as f:
    #l'indentation est définie de sorte que le contenu du fichier soit facile à voir
    # ensure_ascii est configuré pour empêcher les caractères japonais déformés
    json.dump(output, f, indent=4, ensure_ascii=False)

Au fait, le contenu devrait ressembler à ceci.

output
[{'id': '01',

'nom': 'M. A', 'profile': {'age': 22, 'height': 177, 'weight': 64}, 'likes': [{'name': 'sushi', 'reason': 'parce que c'est délicieux'}, {'name': 'Golf', 'reason': 'Parce que je suis fou'}]}, {'id': '02', 'nom': 'M. B', 'profile': {'age': 24, 'height': 171, 'weight': 57}, 'likes': [{'name': 'baseball', 'reason': 'parce que ça excite'}, {'name': 'camera', 'reason': 'parce que je veux me souvenir'}]}, {'id': '03', 'nom': 'C-san', 'profile': {'age': 27, 'height': 167, 'weight': 62}, 'aime': [{'nom': 'canard', 'raison': 'parce que c'est mignon'}, {'name': 'villageager', 'reason': 'parce que c'est gentil'}, {'name': 'warrior', 'reason': 'parce que c'est cool'}]}]

c'est tout. En dehors de cela, il peut être plus facile de le mettre en place uniquement avec le type dict, mais cette fois j'ai écrit une méthode pour convertir ce qui a été lu dans le cadre de données pandas tel quel.

finalement

Merci d'avoir lu jusqu'au bout. La prochaine fois, c'est le designer mirinrin! Continuez à profiter du calendrier de l'Avent Fringe 81 2019.

Recommended Posts

L'histoire lorsqu'un utilisateur Python passe un fichier JSON
Comment créer un fichier JSON en Python
Analyser une chaîne JSON écrite dans un fichier en Python
Script Python qui crée un fichier JSON à partir d'un fichier CSV
J'ai créé un script en Python pour convertir un fichier texte pour JSON (pour l'extrait d'utilisateur vscode)
Créer un fichier binaire en Python
Précautions lors de la création d'un générateur Python
Lors de l'écriture d'un programme en Python
[Python, Selenium, PhantomJS] Une histoire lors de la capture d'un site Web avec une charge paresseuse
Créer un fichier power simple avec Python
Python #JSON
Créer un fichier deb à partir d'un package python
[GPS] Créer un fichier kml avec Python
Une histoire sur Python pop and append
L'histoire du traitement A du blackjack (python)
J'ai créé un fichier de configuration avec Python
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Erreur lors de l'installation d'un module avec Python pip
Une histoire addictive lors de l'utilisation de tensorflow sur Android
Comment lire un fichier CSV avec Python 2/3
Créer un fichier GIF en utilisant Pillow en Python
Lire un fichier contenant des lignes brouillées en Python
[Python3] Une histoire bloquée avec la conversion du fuseau horaire
Argument de variable Python Un mémorandum lors de l'héritage d'une classe définie
Comment générer un objet Python à partir de JSON
Une histoire sur la gestion des données binaires en Python
Remarque Python: lors de l'attribution d'une valeur à une chaîne
J'ai essayé de lire un fichier CSV en utilisant Python
Un mémo lors de la création d'un environnement python avec miniconda
Exporter la version Python3 OpenCV KeyPoint dans un fichier
Créez un fichier MIDI en Python en utilisant pretty_midi
Une histoire sur la modification de Python et l'ajout de fonctions
Lire ligne par ligne à partir d'un fichier avec Python
Je veux écrire dans un fichier avec Python
Ouvrir la boîte de dialogue de fichier avec l'interface graphique Python (tkinter.filedialog)
Fichier python de script
Une histoire qui était pratique lorsque j'ai essayé d'utiliser le module d'adresse IP python
Une histoire bloquée lors de la tentative de mise à niveau de la version Python avec GCE
Traitement de fichiers Python
Lors de l'écriture dans un fichier csv avec python, une histoire que j'ai fait une légère erreur et n'a pas respecté la date de livraison
Faire une copie d'un fichier Google Drive à partir de Python
J'ai essayé d'exécuter python à partir d'un fichier chauve-souris
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Que faire lorsque gdal_merge génère un fichier énorme
Un mémorandum pour exécuter un script python dans un fichier bat
Je veux échantillonner au hasard un fichier avec Python
Problèmes lors de la création d'un outil de conversion csv-json avec python
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Choses à noter lors de l'initialisation d'une liste en Python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Lire le fichier json avec Python, le formater et générer le json
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python