Travailler avec JSON et Pandas DataFrame est courant dans l’analyse de données, le reporting et les pipelines ETL. Bien que Pandas propose readjson pour un parsing de base, il peut avoir des difficultés avec des structures profondément imbriquées, des fichiers très volumineux ou des flux de travail axés sur Excel. C’est là qu’Aspose.Cells for Python intervient. Il fournit un riche pipeline JSON-vers-Excel, que vous pouvez facilement intégrer avec Pandas pour obtenir des DataFrames propres pour l’analyse. Dans cet article de blog, vous apprendrez comment convertir JSON en DataFrames Pandas en Python.
Bibliothèque Python pour convertir JSON en DataFrame Pandas
Aspose.Cells for Python via .NET est une API de feuille de calcul puissante qui ne nécessite pas Microsoft Excel. Au-delà de l’automatisation classique d’Excel, elle prend en charge l’importation et l’exportation directe de JSON, ce qui la rend idéale lorsque vous souhaitez convertir JSON en un DataFrame Pandas et ensuite l’enregistrer ou le traiter dans Excel.
Avec Aspose.Cells, vous pouvez :
- Importer JSON dans des feuilles de calcul à l’aide de
JsonUtility, avec des options pour gérer les tableaux et les structures imbriquées. - Convertir les plages de la feuille de calcul en DataFrames Pandas pour l’analyse et la visualisation.
- Créer, charger et gérer le JSON dans les fichiers Excel, ce qui convient aux pipelines d’analytique.
- Exporter les DataFrames vers Excel (XLSX, CSV, ODS, PDF) pour les rapports.
En bref, la bibliothèque facilite le transfert de données de JSON vers Excel pour la création de rapports, tandis que vous utilisez Pandas pour une analyse plus approfondie. Le JsonUtility importe JSON dans une feuille de calcul, et JsonLayoutOptions contrôle comment les tableaux et les objets imbriqués se développent.
Convert JSON to DataFrame
Aspose.Cells importe JSON directement dans une feuille de calcul. Vous lisez ensuite la ligne d’en-tête et les lignes de données pour construire un DataFrame Pandas.
Suivez les étapes ci-dessous pour convertir JSON en un DataFrame pandas :
- Créer un classeur et obtenir la première feuille de calcul.
- Configurer
JsonLayoutOptionspour traiter les tableaux comme des tables. - Importez la chaîne JSON à la ligne
0, colonne0. - Utilisez la première ligne comme en-têtes de colonnes.
- Extract remaining rows as data.
- Construire un DataFrame Pandas.
L’exemple de code suivant montre comment convertir JSON en un DataFrame pandas en Python :
import pandas as pd
import aspose.cells as ac
# Créez un nouveau classeur et obtenez la première feuille de calcul (index basé sur 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Configurer la manière dont le JSON doit être agencé dans la feuille de calcul.
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Exemple de tableau JSON d'objets simples
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# Importer le JSON dans la feuille de calcul en commençant à la ligne = 0, colonne = 0 (cellule A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Localisez la première ligne qui contient des données (ce sera notre ligne d'en-tête)
header_idx = ws.cells.min_data_row
# Extraire les valeurs d'en-tête de cette ligne pour les utiliser comme noms de colonnes de DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Extraire toutes les lignes suivantes en tant que données (sauter la ligne d'en-tête)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Construisez le DataFrame en utilisant les en-têtes et les lignes collectées.
df = pd.DataFrame(data, columns=columns)
# Display the result
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
Convert Nested JSON to Pandas DataFrame
Si votre JSON contient des objets imbriqués, Aspose.Cells importe le JSON dans une feuille de calcul en utilisant JsonUtility, que vous pouvez ensuite exporter vers un DataFrame. Les JsonLayoutOptions contrôlent la manière dont les tableaux et les objets imbriqués sont développés.
Suivez les étapes ci-dessous pour convertir un JSON imbriqué en DataFrame pandas :
- Créez un classeur et sélectionnez la première feuille de calcul.
- Définissez les propriétés requises
JsonLayoutOptionstelles quearrayastable=True,ignorearraytitle=True,ignoreobjecttitle=Trueetkeptschema=True. - Importez le JSON imbriqué à la ligne
0, colonne0. - Détectez la plage utilisée et lisez la ligne d’en-tête sur toute la largeur.
- Lire toutes les lignes suivantes sur la même portée (largeur fixe).
- Construisez le DataFrame ; optionnellement cast les dtypes (par exemple,
totalen numérique).
L’exemple de code suivant montre comment convertir un JSON imbriqué en un DataFrame pandas en Python :
import pandas as pd
import aspose.cells as ac
# Créer un classeur et obtenir la première feuille de calcul
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Options de mise en page pour JSON imbriqué
opt = ac.utility.JsonLayoutOptions()
opt.array_as_table = True # Treat 'orders' array as a table (rows)
opt.ignore_array_title = True # Do not place a title row for the 'orders' array
opt.ignore_object_title = True # Do not place extra title rows for nested objects (e.g., 'buyer')
opt.kept_schema = True # Keep a stable set of columns even if some records miss fields
# Étape 3 : Votre JSON imbriqué
nested = '''
{
"batch": "A1",
"orders": [
{"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
{"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
]
}
'''
# Importez à A1 (row=0, col=0) en utilisant les options ci-dessus
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Détecter la plage utilisée
first_row = ws.cells.min_data_row
first_col = ws.cells.min_data_column
last_row = ws.cells.max_data_row
last_col = ws.cells.max_data_column
# Lisez la ligne d'en-tête sur toute la largeur de la colonne utilisée (largeur fixe)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Rendez les en-têtes sécurisés : remplacer None/vide par \"Colonne{n}\" et convertir en str
columns = [
(str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
for idx, v in enumerate(raw_columns)
]
# Lisez les lignes de données sur la même largeur (la largeur fixe garantit l'alignement)
data = []
for r in range(first_row + 1, last_row + 1):
row_vals = [ws.cells.get(r, c).value for c in range(first_col, last_col + 1)]
data.append(row_vals)
# Construire DataFrame
df = pd.DataFrame(data, columns=columns)
# Optionnel : nettoyer les noms de colonnes (par exemple, remplacer les espaces)
df.columns = [str(c).strip() for c in df.columns]
# Saisie optionnelle :
# - Gardez les codes ZIP sous forme de chaînes (les zéros initiaux comptent)
# - Convertir les totaux en numeriques (forcer les non-numeriques à NaN)
for col in list(df.columns):
if col.lower().endswith("total"):
df[col] = pd.to_numeric(df[col], errors="coerce")
# Print
print(df)
Output
A1 1001 49.90 NYC 10001
0 None 1002 79.00 Boston 02108
Remarque : Si vous activez
convertnumericordate=True, les chaînes ressemblant à des numéros (par exemple, les totaux) peuvent être converties en nombres, mais les codes postaux comme\"02108\"peuvent perdre des zéros. Gardez-le surFalsesi vous avez besoin que les codes postaux soient des chaînes.
Convertir Excel en DataFrame Pandas via JSON
Exportez toute plage Excel au format JSON avec Aspose.Cells, puis chargez ce JSON dans Pandas en tant que DataFrame. Cela est utile lorsque vous avez besoin d’un transfert JSON structuré pour des services ou des pipelines.
Suivez les étapes ci-dessous pour convertir Excel en un DataFrame pandas via JSON :
- Créer un nouveau classeur, obtenir la première feuille de calcul et ajouter des valeurs d’exemple.
- Créer
JsonSaveOptionsavec des valeurs par défaut. - Exportez la plage utilisée en une chaîne JSON avec la méthode
exportrangetojson(). - Lisez la chaîne JSON dans un DataFrame en utilisant la méthode
pd.readjson(io.StringIO(jsontext)). - Inspecter ou traiter le DataFrame selon les besoins.
L’exemple de code suivant montre comment convertir Excel en un DataFrame pandas via JSON en Python :
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Créer un nouveau classeur et accéder à la première feuille de calcul.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Obtenez les cellules de la feuille de calcul
cells = worksheet.cells
# Populate a small table (headers + rows)
cells.get("A1").value = "Name"
cells.get("B1").value = "Age"
cells.get("C1").value = "City"
cells.get("A2").value = "Alice"
cells.get("B2").value = 25
cells.get("C2").value = "New York"
cells.get("A3").value = "Bob"
cells.get("B3").value = 30
cells.get("C3").value = "San Francisco"
cells.get("A4").value = "Charlie"
cells.get("B4").value = 35
cells.get("C4").value = "Los Angeles"
# Configurer les options d'enregistrement JSON (les valeurs par défaut conviennent pour une table simple)
json_save_options = JsonSaveOptions()
# Exporter la plage utilisée sous forme de chaîne JSON
# maxdisplayrange récupère toute la région rectangulaire qui contient des données
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# Lisez la chaîne JSON dans un DataFrame Pandas.
# Les pandas peuvent analyser une chaîne JSON directement
df = pd.read_json(io.StringIO(json_text))
# Utilisez le DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Obtenez une licence gratuite
Évaluez Aspose.Cells for Python via .NET sans limites de fonctionnalité en appliquant une licence temporaire gratuite. Visitez la page de licence temporaire pour débloquer l’intégralité des fonctionnalités, y compris l’importation JSON (JsonUtility), le contrôle de mise en page (JsonLayoutOptions), la préservation du schéma et la conversion numérique/date.
Ressources supplémentaires gratuites
Vous pouvez utiliser les ressources ci-dessous pour approfondir l’importation JSON, les options de mise en page et d’autres manipulations Excel avec Aspose.Cells for Python.
Conclusion
La conversion de JSON en DataFrames Pandas devient simple avec Aspose.Cells for Python. Vous bénéficiez d’une gestion fiable des structures imbriquées, d’options pour la stabilité du schéma et d’un chemin facile vers l’exportation Excel si nécessaire. Combinez la flexibilité de Pandas avec le pipeline JSON/Excel dans Aspose.Cells pour simplifier le traitement des données et débloquer une analyse puissante en Python.
If you have questions, visit our forum de support gratuit.We are happy to help you.
