Die Arbeit mit JSON und Pandas DataFrame ist in der Datenanalyse, Berichterstattung und ETL-Pipelines üblich. Während Pandas readjson für die grundlegende Verarbeitung bereitstellt, kann es bei tief verschachtelten Strukturen, sehr großen Dateien oder Excel-zuerst-Workflows Schwierigkeiten haben. Hier kommt Aspose.Cells for Python ins Spiel. Es bietet eine umfangreiche JSON zu Excel-Pipeline, die Sie einfach mit Pandas integrieren können, um saubere DataFrames für die Analyse zu erhalten. In diesem Blogbeitrag erfahren Sie, wie Sie JSON in Pandas-Datenrahmen in Python konvertieren können.

Python Bibliothek zum Konvertieren von JSON in ein Pandas DataFrame

Aspose.Cells for Python über .NET ist eine leistungsstarke Tabellenkalkulations-API, die Microsoft Excel nicht benötigt. Neben der klassischen Excel-Automatisierung unterstützt sie den direkten Import und Export von JSON, was sie ideal macht, wenn Sie JSON in ein Pandas DataFrame konvertieren und es später in Excel speichern oder verarbeiten möchten.

Mit Aspose.Cells können Sie:

  • Importieren Sie JSON in Arbeitsblätter mit JsonUtility, mit Optionen zum Verarbeiten von Arrays und verschachtelten Strukturen.
  • Konvertieren Sie Arbeitsblattbereiche in Pandas DataFrames zur Analyse und Visualisierung.
  • Erstellen, Laden und Verarbeiten von JSON in Excel Dateien, die für Analyse-Pipelines geeignet sind.
  • Exportieren Sie DataFrames zurück nach Excel (XLSX, CSV, ODS, PDF) für die Berichterstattung.

Kurz gesagt, die Bibliothek erleichtert das Übertragen von Daten von JSON nach Excel für Berichte, während Sie Pandas für tiefere Analysen verwenden. Die JsonUtility importiert JSON in ein Arbeitsblatt, und JsonLayoutOptions steuert, wie Arrays und geschachtelte Objekte erweitert werden.

Convertiere JSON in DataFrame

Aspose.Cells importiert JSON direkt in ein Arbeitsblatt. Sie lesen dann die Kopfzeile und die Datenzeilen, um ein Pandas DataFrame zu erstellen.

Befolgen Sie die folgenden Schritte, um JSON in ein pandas DataFrame zu konvertieren:

  1. Erstellen Sie eine Arbeitsmappe und erhalten Sie das erste Arbeitsblatt.
  2. Konfigurieren Sie JsonLayoutOptions, um Arrays als Tabellen zu behandeln.
  3. Import the JSON string at row 0, column 0.
  4. Verwenden Sie die erste Zeile als Spaltenüberschrift.
  5. Extract remaining rows as data.
  6. Erstellen Sie ein Pandas DataFrame.

Der folgende Codebeispiel zeigt, wie man JSON in ein pandas DataFrame in Python konvertiert:

import pandas as pd
import aspose.cells as ac

# Erstellen Sie eine neue Arbeitsmappe und holen Sie sich das erste Arbeitsblatt (0-basierter Index)
wb = ac.Workbook()
ws = wb.worksheets.get(0)

# Konfigurieren Sie, wie JSON im Arbeitsblatt angeordnet werden soll.
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True           # Treat a top-level JSON array as a table (rows/columns)

# Beispiel-JSON-Array einfacher Objekte
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'

# Importieren Sie JSON in das Arbeitsblatt, beginnend bei Zeile=0, Spalte=0 (Zelle A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)

# Finden Sie die erste Zeile, die Daten enthält (dies wird unsere Kopfzeile sein)
header_idx = ws.cells.min_data_row

# Extrahieren Sie die Header-Werte aus dieser Zeile, um sie als DataFrame-Spaltennamen zu verwenden.
columns = [cell.value for cell in ws.cells.rows[header_idx]]

# Extrahieren Sie alle nachfolgenden Zeilen als Daten (überspringen Sie die Kopfzeile)
data = [
    [cell.value for cell in row]
   for idx, row in enumerate(ws.cells.rows)
    if row and idx != header_idx
]

# Erstellen Sie das DataFrame mit den gesammelten Überschriften und Zeilen.
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

Wenn Ihr JSON verschachtelte Objekte enthält, importiert Aspose.Cells JSON in ein Arbeitsblatt mit JsonUtility, das Sie dann in ein DataFrame exportieren können. Die JsonLayoutOptions steuern, wie Arrays und verschachtelte Objekte erweitert werden.

Befolgen Sie die folgenden Schritte, um verschachteltes JSON in ein pandas DataFrame zu konvertieren:

  1. Erstellen Sie ein Arbeitsbuch und wählen Sie das erste Arbeitsblatt aus.
  2. Setzen Sie die erforderlichen JsonLayoutOptions-Eigenschaften wie arrayastable=True, ignorearraytitle=True, ignoreobjecttitle=True und keptschema=True.
  3. Importieren Sie das geschachtelte JSON in Zeile 0, Spalte 0.
  4. Bestimmen Sie den verwendeten Bereich und lesen Sie die Kopfzeile über die gesamte Breite.
  5. Lies alle nachfolgenden Zeilen über den gleichen Bereich hinweg (feste Breite).
  6. Erstellen Sie das DataFrame; optional die Datentypen umwandeln (z. B. total in numerisch).

Der folgende Codebeispiel zeigt, wie man geschachteltes JSON in ein pandas DataFrame in Python konvertiert:

import pandas as pd
import aspose.cells as ac

# Erstellen Sie ein Arbeitsbuch und erhalten Sie das erste Arbeitsblatt.
wb = ac.Workbook()
ws = wb.worksheets.get(0)

# Layout-Optionen für verschachteltes JSON
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

# Schritt 3: Ihr geschachteltes JSON
nested = '''
{
  "batch": "A1",
  "orders": [
    {"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
    {"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
  ]
}
'''

# Importieren bei A1 (Zeile=0, Spalte=0) unter Verwendung der oben genannten Optionen
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)

# Detect used range
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

# Lesen Sie die Kopfzeile über den gesamten verwendeten Spaltenbereich (feste Breite)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]

# Machen Sie Überschriften sicher: Ersetzen Sie None/leer durch \"Spalte{n}\" und wandeln Sie in str um
columns = [
    (str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
   for idx, v in enumerate(raw_columns)
]

# Lesen Sie Datenzeilen über denselben Bereich hinweg (feste Breite garantiert die Ausrichtung)
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)

# DataFrame erstellen
df = pd.DataFrame(data, columns=columns)

# Optional: Spaltennamen aufräumen (z.B. Leerzeichen ersetzen)
df.columns = [str(c).strip() for c in df.columns]

# Optional typing:
# - Halten Sie ZIPs als Strings (führende Nullen sind wichtig)
# - Konvertiere Gesamtsummen in numerisch (nicht-numerische Werte in NaN umwandeln)
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

Hinweis: Wenn Sie convertnumericordate=True aktivieren, können numerisch aussehende Zeichenfolgen (z. B. Summen) in Zahlen umgewandelt werden, aber Postleitzahlen wie \"02108\" können führende Nullen verlieren. Lassen Sie es auf False, wenn Sie Postleitzahlen als Zeichenfolgen benötigen.

Konvertiere Excel in ein Pandas DataFrame über JSON

Exportieren Sie einen beliebigen Excel-Bereich in JSON mit Aspose.Cells und laden Sie dann dieses JSON in Pandas als DataFrame. Dies ist hilfreich, wenn Sie einen strukturierten JSON-Übergang für Dienste oder Pipelines benötigen.

Befolgen Sie die folgenden Schritte, um Excel in ein pandas DataFrame über JSON zu konvertieren:

  1. Erstellen Sie eine neue Arbeitsmappe, holen Sie sich das erste Arbeitsblatt und fügen Sie Beispielwerte hinzu.
  2. Erstellen Sie JsonSaveOptions mit Standardwerten.
  3. Exportieren Sie den verwendeten Bereich in eine JSON-Zeichenfolge mit der exportrangetojson()-Methode.
  4. Lesen Sie den JSON-String mit der Methode pd.readjson(io.StringIO(jsontext)) in ein DataFrame ein.
  5. Überprüfen oder verarbeiten Sie den DataFrame nach Bedarf.

Das folgende Codebeispiel zeigt, wie man Excel in ein pandas DataFrame über JSON in Python konvertiert:

import io
import pandas as pd
from aspose.cells.utility import JsonUtility  # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License

# Erstellen Sie ein neues Arbeitsbuch und greifen Sie auf das erste Arbeitsblatt zu.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)

# Holen Sie sich die Zellen des Arbeitsblatts
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"

# Stellen Sie die JSON-Speicheroptionen ein (Standardeinstellungen sind für eine einfache Tabelle in Ordnung)
json_save_options = JsonSaveOptions()

# Exportieren Sie den verwendeten Bereich in einen JSON-String.
# maxdisplayrange erfasst das gesamte rechteckige Gebiet, das Daten enthält
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)

# Lese die JSON-Zeichenfolge in ein Pandas DataFrame ein
#    Pandas kann einen JSON-String direkt analysieren.
df = pd.read_json(io.StringIO(json_text))

# Verwende das DataFrame
print(df)

Output

      Name  Age           City
0    Alice   25       New York
1      Bob   30  San Francisco
2  Charlie   35    Los Angeles

Holen Sie sich eine kostenlose Lizenz

Bewerten Sie Aspose.Cells for Python über .NET ohne Funktionsbeschränkungen, indem Sie eine kostenlose temporäre Lizenz anwenden. Besuchen Sie die temporäre Lizenzseite, um die volle Funktionalität freizuschalten, einschließlich JSON-Import (JsonUtility), Layoutkontrolle (JsonLayoutOptions), Schemaerhaltung und numerischer / Datumsumwandlung.

Zusätzliche kostenlose Ressourcen

Sie können die untenstehenden Ressourcen nutzen, um tiefer in den JSON-Import, Layout-Optionen und andere Excel-Manipulationen mit Aspose.Cells for Python einzutauchen.

Schlussfolgerung

Die Konvertierung von JSON in Pandas DataFrames wird mit Aspose.Cells for Python unkompliziert. Sie erhalten eine zuverlässige Handhabung für verschachtelte Strukturen, Optionen für die Stabilität des Schemas und einen einfachen Weg zum Excel-Export, wenn dies erforderlich ist. Kombinieren Sie die Flexibilität von Pandas mit der JSON/Excel-Pipeline in Aspose.Cells, um die Datenverarbeitung zu vereinfachen und leistungsstarke Analysen in Python freizuschalten.

Wenn Sie Fragen haben, besuchen Sie unser free support forum.Wir helfen Ihnen gerne.

Siehe auch