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 :

  1. Créer un classeur et obtenir la première feuille de calcul.
  2. Configurer JsonLayoutOptions pour traiter les tableaux comme des tables.
  3. Importez la chaîne JSON à la ligne 0, colonne 0.
  4. Utilisez la première ligne comme en-têtes de colonnes.
  5. Extract remaining rows as data.
  6. 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 :

  1. Créez un classeur et sélectionnez la première feuille de calcul.
  2. Définissez les propriétés requises JsonLayoutOptions telles que arrayastable=True, ignorearraytitle=True, ignoreobjecttitle=True et keptschema=True.
  3. Importez le JSON imbriqué à la ligne 0, colonne 0.
  4. Détectez la plage utilisée et lisez la ligne d’en-tête sur toute la largeur.
  5. Lire toutes les lignes suivantes sur la même portée (largeur fixe).
  6. Construisez le DataFrame ; optionnellement cast les dtypes (par exemple, total en 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 sur False si 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 :

  1. Créer un nouveau classeur, obtenir la première feuille de calcul et ajouter des valeurs d’exemple.
  2. Créer JsonSaveOptions avec des valeurs par défaut.
  3. Exportez la plage utilisée en une chaîne JSON avec la méthode exportrangetojson().
  4. Lisez la chaîne JSON dans un DataFrame en utilisant la méthode pd.readjson(io.StringIO(jsontext)).
  5. 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.

Voir aussi