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:
- Utwórz skoroszyt i uzyskaj pierwszy arkusz kalkulacyjny.
- Skonfiguruj
JsonLayoutOptions
, aby traktować tablice jako tabele. - Importuj ciąg JSON w wierszu
0
, kolumnie0
. - Użyj pierwszego wiersza jako nagłówków kolumn.
- Extract remaining rows as data.
- 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:
- Utwórz skoroszyt i wybierz pierwszy arkusz.
- Ustaw wymagane właściwości
JsonLayoutOptions
, takie jakarrayastable=True
,ignorearraytitle=True
,ignoreobjecttitle=True
orazkeptschema=True
. - Import the nested JSON at row
0
, column0
. - Wykryj używany zakres i odczytaj wiersz nagłówka w całym zakresie.
- Przeczytaj wszystkie kolejne wiersze w tym samym zakresie (stała szerokość).
- 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 jakoFalse
, 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:
- Utwórz nowy skoroszyt, uzyskaj pierwszą arkusz roboczy i dodaj przykładowe wartości.
- Utwórz
JsonSaveOptions
z domyślnymi ustawieniami. - Eksportuj używany zakres do łańcucha JSON za pomocą metody
exportrangetojson()
. - Przeczytaj ciąg JSON do DataFrame za pomocą metody
pd.readjson(io.StringIO(jsontext))
. - 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.