Bekerja dengan JSON dan DataFrame Pandas adalah hal yang umum dalam analisis data, pelaporan, dan alur kerja ETL. Sementara Pandas menyediakan readjson untuk parsing dasar, ia dapat kesulitan dengan struktur yang sangat bertingkat, file yang sangat besar, atau alur kerja yang berorientasi Excel. Di sinilah Aspose.Cells for Python membantu. Ini menyediakan alur kerja yang kaya dari JSON ke Excel, yang dapat Anda integrasikan dengan mudah dengan Pandas untuk mendapatkan DataFrame yang bersih untuk analisis. Dalam pos blog ini, Anda akan belajar bagaimana mengconvert JSON menjadi DataFrame Pandas dalam Python.
Perpustakaan Python untuk Mengonversi JSON ke DataFrame Pandas
Aspose.Cells for Python melalui .NET adalah API spreadsheet yang kuat yang tidak memerlukan Microsoft Excel. Selain otomatisasi Excel klasik, ia mendukung impor dan ekspor JSON langsung, menjadikannya ideal ketika Anda ingin mengonversi JSON menjadi Pandas DataFrame dan kemudian menyimpannya atau memprosesnya di Excel.
Dengan Aspose.Cells, Anda dapat:
- Impor JSON ke lembar kerja menggunakan
JsonUtility, dengan opsi untuk menangani array dan struktur bersarang. - Ubah rentang lembar kerja menjadi DataFrame Pandas untuk analisis dan visualisasi.
- Buat, muat, dan tangani JSON di dalam file Excel, yang cocok untuk jalur analitik.
- Ekspor DataFrames kembali ke Excel (XLSX, CSV, ODS, PDF) untuk pelaporan.
Singkatnya, perpustakaan ini memudahkan untuk memindahkan data dari JSON ke Excel untuk pelaporan, sementara Anda menggunakan Pandas untuk analisis yang lebih mendalam. JsonUtility mengimpor JSON ke dalam lembar kerja, dan JsonLayoutOptions mengontrol bagaimana array dan objek bersarang berkembang.
Convert JSON to DataFrame
Aspose.Cells mengimpor JSON langsung ke dalam lembar kerja. Anda kemudian membaca baris header dan baris data untuk membangun DataFrame Pandas.
Ikuti langkah-langkah di bawah ini untuk mengonversi JSON menjadi DataFrame pandas:
- Buat sebuah workbook dan ambil worksheet pertama.
- Konfigurasikan
JsonLayoutOptionsuntuk memperlakukan array sebagai tabel. - Import the JSON string at row
0, column0. - Gunakan baris pertama sebagai header kolom.
- Ekstrak baris yang tersisa sebagai data.
- Bangun DataFrame Pandas.
Contoh kode berikut menunjukkan cara mengonversi JSON menjadi DataFrame pandas di Python:
import pandas as pd
import aspose.cells as ac
# Buat buku kerja baru dan ambil lembar kerja pertama (indeks berbasis 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Atur bagaimana JSON harus ditata di lembar kerja
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Contoh array JSON dari objek sederhana
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# Impor JSON ke dalam lembar kerja mulai dari row=0, col=0 (sel A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Temukan baris pertama yang berisi data (ini akan menjadi baris header kami)
header_idx = ws.cells.min_data_row
# Ekstrak nilai header dari baris tersebut untuk digunakan sebagai nama kolom DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Ambil semua baris berikutnya sebagai data (lewati baris header)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Bangun DataFrame menggunakan header dan baris yang dikumpulkan
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
Jika JSON Anda berisi objek bersarang, Aspose.Cells mengimpor JSON ke dalam worksheet menggunakan JsonUtility, yang kemudian dapat Anda ekspor ke DataFrame. JsonLayoutOptions mengontrol bagaimana array dan objek bersarang diperluas.
Ikuti langkah-langkah di bawah ini untuk mengonversi JSON bersarang menjadi DataFrame pandas:
- Buat workbook dan pilih worksheet pertama.
- Tetapkan properti
JsonLayoutOptionsyang diperlukan sepertiarrayastable=True,ignorearraytitle=True,ignoreobjecttitle=True, dankeptschema=True. - Impor JSON bersarang di baris
0, kolom0. - Deteksi kisaran yang digunakan dan bacalah baris header di sepanjang jangkauan penuh.
- Baca semua baris berikutnya di seluruh rentang yang sama (lebar tetap).
- Bangun DataFrame; secara opsional ubah dtypes (misalnya,
totalmenjadi numerik).
Contoh kode berikut menunjukkan cara mengonversi JSON bersarang menjadi DataFrame pandas di Python:
import pandas as pd
import aspose.cells as ac
# Buat Workbook dan dapatkan worksheet pertama
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Opsi tata letak untuk JSON bersarang
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
# Langkah 3: JSON bersarang Anda
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 di A1 (baris=0, kolom=0) menggunakan opsi di atas
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Deteksi rentang yang digunakan
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
# Baca baris header di seluruh rentang kolom yang digunakan (lebar tetap)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Buat header menjadi aman: ganti None/kosong dengan \"Kolom{n}\" dan ubah menjadi 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)
]
# Baca baris data di seluruh rentang yang sama (lebar tetap menjamin penjajaran)
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)
# Buat DataFrame
df = pd.DataFrame(data, columns=columns)
# Opsional: rapikan nama kolom (misalnya, ganti spasi)
df.columns = [str(c).strip() for c in df.columns]
# Optional typing:
# - Simpan ZIP sebagai string (nol di depan penting)
# - Ubah total menjadi numerik (ganti non-numerik menjadi 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
Catatan: Jika Anda mengaktifkan
convertnumericordate=True, string yang terlihat numerik (misalnya, total) dapat dikonversi menjadi angka, tetapi kode ZIP seperti\"02108\"dapat kehilangan nol di depan. Pertahankan dalam keadaanFalsejika Anda memerlukan kode ZIP sebagai string.
Convert Excel to Pandas DataFrame via JSON
Ekspor rentang Excel apa pun ke JSON dengan Aspose.Cells, lalu muat JSON tersebut ke dalam Pandas sebagai DataFrame. Ini berguna ketika Anda memerlukan pengalihan JSON terstruktur untuk layanan atau jalur alur kerja.
Ikuti langkah-langkah di bawah ini untuk mengonversi Excel ke DataFrame pandas melalui JSON:
- Buat buku kerja baru, ambil lembar kerja pertama, dan tambahkan nilai contoh.
- Buat
JsonSaveOptionsdengan default. - Ekspor rentang yang digunakan ke string JSON dengan metode
exportrangetojson(). - Baca string JSON ke dalam DataFrame menggunakan metode
pd.readjson(io.StringIO(jsontext)). - Periksa atau proses DataFrame sesuai kebutuhan.
Contoh kode berikut menunjukkan cara mengonversi Excel menjadi DataFrame pandas melalui JSON di Python:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Buat workbook baru dan akses lembar kerja pertama
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Ambil sel-sel dari lembar kerja
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"
# Atur opsi penyimpanan JSON (default sudah baik untuk tabel sederhana)
json_save_options = JsonSaveOptions()
# Ekspor rentang yang digunakan ke string JSON
# maxdisplayrange mengambil seluruh wilayah persegi panjang yang berisi data
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# Baca string JSON ke dalam DataFrame Pandas
# Pandas dapat mengurai string JSON secara langsung
df = pd.read_json(io.StringIO(json_text))
# Gunakan DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Dapatkan Lisensi Gratis
Evaluasi Aspose.Cells for Python melalui .NET tanpa batasan fitur dengan menerapkan lisensi sementara gratis. Kunjungi temporary license page untuk membuka fungsi penuh, termasuk impor JSON (JsonUtility), kontrol tata letak (JsonLayoutOptions), pelestarian skema, dan konversi numerik/tanggal.
Sumber Daya Tambahan Gratis
Anda dapat menggunakan sumber daya di bawah ini untuk lebih mendalami impor JSON, opsi tata letak, dan manipulasi Excel lainnya dengan Aspose.Cells for Python.
Kesimpulan
Mengonversi JSON menjadi DataFrame Pandas menjadi mudah dengan Aspose.Cells for Python. Anda mendapatkan penanganan yang andal untuk struktur bersarang, opsi untuk stabilitas skema, dan jalur mudah untuk ekspor Excel jika diperlukan. Gabungkan fleksibilitas Pandas dengan jalur JSON/Excel di Aspose.Cells untuk menyederhanakan pemrosesan data dan membuka analisis yang kuat di Python.
Jika Anda memiliki pertanyaan, kunjungi forum dukungan gratis kami.Kami senang dapat membantu Anda.
