Praca z JSON i Pandas DataFrame jest powszechna w analizie danych, raportowaniu i procesach ETL. Chociaż Pandas oferuje readjson do podstawowego analizowania, może mieć trudności z głęboko zagnieżdżonymi strukturami, bardzo dużymi plikami lub workflow opartymi na Excelu. W tym miejscu pomaga Aspose.Cells for Python. Oferuje bogaty pipeline JSON-do-Excel, który możesz łatwo zintegrować z Pandas, aby uzyskać czyste DataFrame do analizy. W tym wpisie na blogu dowiesz się, jak przekształcić JSON na DataFrame Pandas w Python.

Biblioteka Python do konwertowania JSON na DataFrame Pandas

Aspose.Cells for Python via .NET to potężne API arkuszy kalkulacyjnych, które nie wymaga Microsoft Excel. Poza klasyczną automatyzacją Excela, obsługuje bezpośredni import i eksport JSON, co czyni go idealnym, gdy chcesz przekonwertować JSON na DataFrame Pandas, a następnie zapisać lub przetworzyć go w Excelu.

Z Aspose.Cells możesz:

  • Importuj JSON do arkuszy za pomocą JsonUtility, z opcjami obsługi tablic i zagnieżdżonych struktur.
  • Przekształć zakresy arkusza kalkulacyjnego na ramki danych Pandas do analizy i wizualizacji.
  • Stwórz, załaduj i obsługuj JSON w plikach Excel, które pasują do procesów analitycznych.
  • Eksportuj DataFrames z powrotem do Excela (XLSX, CSV, ODS, PDF) w celu raportowania.

Krótko mówiąc, biblioteka ułatwia przenoszenie danych z JSON do Excela w celu raportowania, podczas gdy używasz Pandas do głębszej analizy. JsonUtility importuje JSON do arkusza kalkulacyjnego, a JsonLayoutOptions kontroluje, jak rozwijają się tablice i zagnieżdżone obiekty.

Convert JSON to DataFrame

Aspose.Cells importuje JSON bezpośrednio do arkusza kalkulacyjnego. Następnie odczytujesz wiersz nagłówka i wiersze danych, aby zbudować ramkę danych Pandas.

Postępuj zgodnie z poniższymi krokami, aby przekształcić JSON na DataFrame pandas:

  1. Utwórz skoroszyt i uzyskaj pierwszy arkusz kalkulacyjny.
  2. Skonfiguruj JsonLayoutOptions, aby traktować tablice jako tabele.
  3. Importuj ciąg JSON w wierszu 0, kolumnie 0.
  4. Użyj pierwszego wiersza jako nagłówków kolumn.
  5. Extract remaining rows as data.
  6. Zbuduj ramkę danych Pandas.

Następujący przykład kodu pokazuje, jak przekonwertować JSON na DataFrame pandas w Python:

import pandas as pd
import aspose.cells as ac

# Utwórz nowy skoroszyt i uzyskaj pierwszą kartę roboczą (indeks oparty na zerze)
wb = ac.Workbook()
ws = wb.worksheets.get(0)

# Skonfiguruj, jak JSON powinien być ułożony w arkuszu kalkulacyjnym
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True           # Treat a top-level JSON array as a table (rows/columns)

# Przykładowa tablica JSON prostych obiektów
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'

# Importuj JSON do arkusza, zaczynając od wiersza=0, kolumna=0 (komórka A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)

# Zlokalizuj pierwszy wiersz, który zawiera dane (to będzie nasz wiersz nagłówka)
header_idx = ws.cells.min_data_row

# Wyodrębnij wartości nagłówków z tego wiersza, aby używać ich jako nazw kolumn w DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]

# Wyodrębnij wszystkie kolejne wiersze jako dane (pomijając wiersz nagłówka)
data = [
    [cell.value for cell in row]
   for idx, row in enumerate(ws.cells.rows)
    if row and idx != header_idx
]

# Zbuduj DataFrame, używając zebranych nagłówków i wierszy.
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

Jeśli Twój JSON zawiera zagnieżdżone obiekty, Aspose.Cells importuje JSON do arkusza kalkulacyjnego za pomocą JsonUtility, który następnie możesz wyeksportować do DataFrame. JsonLayoutOptions kontroluje, w jaki sposób tablice i zagnieżdżone obiekty są rozwijane.

Postępuj zgodnie z poniższymi krokami, aby przekonwertować zagnieżdżony JSON na DataFrame pandas:

  1. Utwórz skoroszyt i wybierz pierwszy arkusz.
  2. Ustaw wymagane właściwości JsonLayoutOptions, takie jak arrayastable=True, ignorearraytitle=True, ignoreobjecttitle=True oraz keptschema=True.
  3. Import the nested JSON at row 0, column 0.
  4. Wykryj używany zakres i odczytaj wiersz nagłówka w całym zakresie.
  5. Przeczytaj wszystkie kolejne wiersze w tym samym zakresie (stała szerokość).
  6. Zbuduj DataFrame; opcjonalnie przekształć dtypes (np. total na numeryczny).

Poniższy przykład kodu pokazuje, jak przekonwertować zagnieżdżony JSON na DataFrame pandas w Python:

import pandas as pd
import aspose.cells as ac

# Utwórz skoroszyt i pobierz pierwszy arkusz kalkulacyjny.
wb = ac.Workbook()
ws = wb.worksheets.get(0)

# Opcje układu dla zagnieżdżonego 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

# Krok 3: Twój zagnieżdżony 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"}}
  ]
}
'''

# Importuj w A1 (wiersz=0, kolumna=0) przy użyciu powyższych opcji
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)

# Wykryj używany zakres
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

# Przeczytaj wiersz nagłówka wzdłuż pełnego używanego rozkładu kolumn (stała szerokość)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]

# Zabezpiecz nagłówki: zamień None/pusty na \"Kolumna{n}\" i rzutuj na 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)
]

# Przeczytaj wiersze danych w tym samym zakresie (stała szerokość gwarantuje wyrównanie)
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)

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

# Opcjonalnie: uporządkuj nazwy kolumn (np. zastąp spacje)
df.columns = [str(c).strip() for c in df.columns]

# Optional typing:
# - Zachowaj kody pocztowe jako ciągi znaków (wiodące zera mają znaczenie)
# - Przekształć sumy na liczby (konwertuj nieliczbowe na 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

Uwaga: Jeśli włączysz convertnumericordate=True, ciągi znaków wyglądające numerycznie (np. sumy) mogą zostać przekształcone w liczby, ale kody pocztowe takie jak \"02108\" mogą stracić prowadzące zera. Utrzymuj to jako False, jeśli potrzebujesz kodów pocztowych jako ciągów.

Konwertuj Excel na DataFrame Pandas za pomocą JSON

Eksportuj dowolny zakres Excela do JSON za pomocą Aspose.Cells, a następnie załaduj ten JSON do Pandas jako DataFrame. Jest to pomocne, gdy potrzebujesz strukturalnego transferu JSON do usług lub pipeline’ów.

Śledź poniższe kroki, aby przekonwertować Excel na DataFrame pandas za pomocą JSON:

  1. Utwórz nowy skoroszyt, uzyskaj pierwszą arkusz roboczy i dodaj przykładowe wartości.
  2. Utwórz JsonSaveOptions z domyślnymi ustawieniami.
  3. Eksportuj używany zakres do łańcucha JSON za pomocą metody exportrangetojson().
  4. Przeczytaj ciąg JSON do DataFrame za pomocą metody pd.readjson(io.StringIO(jsontext)).
  5. Sprawdź lub przetwórz DataFrame w razie potrzeby.

Następujący przykład kodu pokazuje, jak przekonwertować Excel na DataFrame pandas za pomocą JSON w Python:

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

# Utwórz nowy skoroszyt i uzyskaj dostęp do pierwszego arkusza kalkulacyjnego.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)

# Pobierz komórki arkusza kalkulacyjnego
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"

# Ustaw opcje zapisywania JSON (domyślne ustawienia są wystarczające dla prostej tabeli)
json_save_options = JsonSaveOptions()

# Eksportuj używany zakres do ciągu JSON
# maxdisplayrange chwyta pełny prostokątny obszar, który zawiera dane
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)

# Przeczytaj ciąg JSON do DataFrame Pandas
#    Pandas może bezpośrednio analizować ciąg JSON.
df = pd.read_json(io.StringIO(json_text))

# Użyj DataFrame
print(df)

Output

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

Zdobądź bezpłatną licencję

Oceń Aspose.Cells for Python poprzez .NET bez ograniczeń funkcji, aplikując darmową tymczasową licencję. Odwiedź stronę temporary license page, aby odblokować pełną funkcjonalność, w tym import JSON (JsonUtility), kontrolę układu (JsonLayoutOptions), zachowanie schematu oraz konwersję numeryczną/dat.

Dodatkowe darmowe zasoby

Możesz skorzystać z poniższych zasobów, aby zgłębić temat importu JSON, opcji układów oraz innych manipulacji w Excelu z Aspose.Cells for Python.

Wnioski

Konwersja JSON na DataFrame’y Pandas staje się prosta dzięki Aspose.Cells for Python. Otrzymujesz niezawodne zarządzanie złożonymi strukturami, opcje stabilności schematu oraz łatwą drogę do eksportu do Excela w razie potrzeby. Połącz elastyczność Pandas z pipeline’em JSON/Excel w Aspose.Cells, aby uprościć przetwarzanie danych i odblokować potężną analizę w Python.

Jeśli masz pytania, odwiedź nasze forum wsparcia.Cieszymy się, że możemy ci pomóc.

Zobacz także