Práce s JSON a Pandas DataFrame je běžná v analýze dat, reportingu a ETL pipelinech. Zatímco Pandas poskytuje readjson pro základní zpracování, může mít potíže s hluboce vnořenými strukturami, velmi velkými soubory nebo pracovními postupy zaměřenými na Excel. Tady přichází na pomoc Aspose.Cells for Python. Nabízí bohatou JSON-to-Excel pipeline, kterou můžete snadno integrovat s Pandas, abyste získali čisté DataFrames pro analýzu. V tomto blogovém příspěvku se naučíte, jak převést JSON na Pandas dataframy v Pythonu.
Python Knihovna pro převod JSON na Pandas DataFrame
Aspose.Cells for Python via .NET je mocné API pro tabulkové procesory, které nevyžaduje Microsoft Excel. Kromě klasické automatizace Excelu podporuje přímý import a export JSON, což je ideální, když chcete převést JSON na DataFrame Pandas a později jej uložit nebo zpracovat v Excelu.
S Aspose.Cells můžete:
- Importujte JSON do listů pomocí
JsonUtility, s možnostmi pro zpracování polí a vnořených struktur. - Převést rozsahy tabulek na DataFrame v Pandasu pro analýzu a vizualizaci.
- Vytvářejte, načítejte a zpracovávejte JSON uvnitř souborů Excel, které vyhovují analytickým pipeline.
- Exportujte DataFramesty zpět do Excelu (XLSX, CSV, ODS, PDF) pro vykazování.
Stručně řečeno, knihovna usnadňuje převod dat z formátu JSON do Excelu pro reportování, zatímco pro hlubší analýzu používáte Pandas. JsonUtility importuje JSON do pracovního listu a JsonLayoutOptions řídí, jak se rozšiřují pole a vnořené objekty.
Convert JSON to DataFrame
Aspose.Cells importuje JSON přímo do pracovní tabulky. Poté přečtete hlavičkový řádek a datové řádky, abyste vytvořili DataFrame Pandas.
Postupujte podle následujících kroků pro převod JSON na pandas DataFrame:
- Vytvořte sešit a získejte první list.
- Nakonfigurujte
JsonLayoutOptions, aby zacházel s poli jako s tabulkami. - Import the JSON string at row
0, column0. - Použijte první řádek jako záhlaví sloupců.
- Extract remaining rows as data.
- Sestavte DataFrame Pandas.
Následující příklad kódu ukazuje, jak převést JSON na pandas DataFrame v Pythonu:
import pandas as pd
import aspose.cells as ac
# Vytvořte nový sešit a získejte první list (index založený na 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Nakonfigurujte, jak by měl být JSON uspořádán v pracovním listě.
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Příklad JSON pole jednoduchých objektů
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# Importujte JSON do tabulky počínaje řádkem=0, sloupec=0 (buňka A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Najděte první řádek, který obsahuje data (to bude náš hlavičkový řádek)
header_idx = ws.cells.min_data_row
# Extrahujte hodnoty záhlaví z tohoto řádku pro použití jako názvy sloupců DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Extrahujte všechny následující řádky jako data (přeskočte řádek záhlaví)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Vytvořte DataFrame pomocí shromážděných záhlaví a řádků
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
Pokud váš JSON obsahuje vnořené objekty, Aspose.Cells importuje JSON do pracovního sešitu pomocí JsonUtility, který poté můžete exportovat do DataFrame. JsonLayoutOptions ovládá, jak jsou pole a vnořené objekty rozšiřovány.
Postupujte podle níže uvedených kroků, abyste převedli vnořenou JSON na pandas DataFrame:
- Vytvořte pracovní sešit a vyberte první list.
- Nastavte požadované vlastnosti
JsonLayoutOptions, jako jsouarrayastable=True,ignorearraytitle=True,ignoreobjecttitle=Trueakeptschema=True. - Import the nested JSON at row
0, column0. - Zjistěte použitý rozsah a přečtěte hlavičkový řádek po celé délce.
- Přečtěte si všechny následující řádky přes stejné rozpětí (pevná šířka).
- Vytvořte DataFrame; volitelně převeďte datové typy (např.
totalna číselný typ).
Následující příklad kódu ukazuje, jak převést vnořený JSON na pandas DataFrame v Pythonu:
import pandas as pd
import aspose.cells as ac
# Vytvořte sešit a získejte první list.
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Možnosti rozložení pro vnořené 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: Váš vnořený 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"}}
]
}
'''
# Import at A1 (row=0, col=0) using the options above
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Zjistit používaný rozsah
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
# Přečtěte si hlavičkový řádek napříč celým použitým rozsahem sloupců (pevná šířka)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Udělejte hlavičky bezpečné: nahraďte None/prázdné \"Column{n}\" a přežeňte 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)
]
# Čtěte datové řádky v rámci stejného rozměru (pevná šířka zaručuje zarovnání)
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)
# Volitelné: upravit názvy sloupců (např. nahradit mezery)
df.columns = [str(c).strip() for c in df.columns]
# Volitelné zadávání:
# - Udržujte ZIPy jako řetězce (počáteční nuly jsou důležité)
# - Převést součty na číselné (převést nečíselné 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
Poznámka: Pokud povolíte
convertnumericordate=True, řetězce vypadající jako čísla (např. součty) se mohou převést na čísla, ale PSČ jako\"02108\"mohou ztratit počáteční nuly. Nechte to naFalse, pokud potřebujete PSČ jako řetězce.
Převod Excelu na Pandas DataFrame pomocí JSON
Exportujte jakýkoliv rozsah Excelu do JSON pomocí Aspose.Cells, a poté načtěte tento JSON do Pandas jako DataFrame. To je užitečné, když potřebujete strukturovaný JSON předání pro služby nebo potrubí.
Postupujte podle níže uvedených kroků pro převod Excelu na DataFrame pandas pomocí JSON:
- Vytvořte nový sešit, získejte první list a přidejte zkušební hodnoty.
- Vytvořte
JsonSaveOptionss výchozími hodnotami. - Export the used range to a JSON string with the
exportrangetojson()method. - Přečtěte JSON řetězec do DataFrame pomocí metody
pd.readjson(io.StringIO(jsontext)). - Zkontrolujte nebo zpracujte DataFrame podle potřeby.
Následující příklad kódu ukazuje, jak převést Excel na pandas DataFrame pomocí JSON v Pythonu:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Vytvořte novou pracovní knihu a přistupte k prvnímu listu
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Získejte buňky pracovního listu
cells = worksheet.cells
# Naplnit malou tabulku (hlavičky + řádky)
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"
# Nastavte možnosti uložení JSON (výchozí nastavení je v pořádku pro jednoduchou tabulku)
json_save_options = JsonSaveOptions()
# Exportujte použitý rozsah do řetězce JSON
# maxdisplayrange zachycuje celou obdélníkovou oblast, která obsahuje data
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# Přečtěte JSON řetězec do Pandas DataFrame
# Pandas může přímo zpracovat řetězec JSON.
df = pd.read_json(io.StringIO(json_text))
# Použijte DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Získejte bezplatnou licenci
Vyhodnoťte Aspose.Cells for Python přes .NET bez omezení funkcí aplikací na bezplatnou dočasnou licenci. Navštivte stránku dočasné licence a odemkněte plnou funkčnost, včetně importu JSON (JsonUtility), ovládání rozložení (JsonLayoutOptions), zachování schématu a konverze čísel/dat.
Další bezplatné zdroje
Můžete použít níže uvedené zdroje pro hlubší pochopení importu JSON, možností rozložení a dalších manipulací v Excelu s Aspose.Cells for Python.
Závěr
Konverze JSON do Pandas DataFrames se stává jednoduchou s Aspose.Cells for Python. Získáte spolehlivé zpracování pro vnořené struktury, možnosti pro stabilitu schématu a snadnou cestu k exportu do Excelu, když je to potřeba. Kombinujte flexibilitu Pandas s JSON/Excel pipeline v Aspose.Cells, abyste zjednodušili zpracování dat a odemkli silnou analýzu v Pythonu.
Pokud máte otázky, navštivte naše free support forum.Jsme rádi, že vám můžeme pomoci.
