JSON ve Pandas DataFrame ile çalışmak, veri analizi, raporlama ve ETL boru hatlarında yaygındır. Pandas, temel ayrıştırma için readjson
sağlasa da, derinlemesine iç içe geçmiş yapılar, çok büyük dosyalar veya Excel öncelikli iş akışlarıyla başa çıkmakta zorlanabilir. İşte bu noktada Aspose.Cells for Python devreye giriyor. Temiz veri çerçeveleri elde etmek için Pandas ile kolayca entegre edebileceğiniz zengin bir JSON’dan Excel’e boru hattı sunuyor. Bu blog yazısında, JSON’u Python’da Pandas veri çerçevelerine nasıl dönüştüreceğinizi öğreneceksiniz.
Python Kütüphanesi JSON’u Pandas DataFrame’e Dönüştürmek için
Aspose.Cells for Python via .NET güçlü bir tablo API’sidir ve Microsoft Excel gerektirmez. Klasik Excel otomasyonunun ötesinde, doğrudan JSON içe aktarma ve dışa aktarma desteği sunar; bu da JSON’u Pandas DataFrame’e dönüştürmek istediğinizde ve daha sonra bunu Excel’de kaydetmek veya işlemek istediğinizde ideal hale getirir.
Aspose.Cells ile şunları yapabilirsiniz:
JsonUtility
kullanarak JSON’u çalışma sayfalarına aktarın, dizileri ve iç içe yapıları yönetmek için seçeneklerle birlikte.- Çalışma sayfası aralıklarını analiz ve görselleştirme için Pandas DataFrame’lerine dönüştürün.
- Excel dosyaları içinde JSON oluşturun, yükleyin ve yönetin; bu, analiz hatlarına uygundur.
- Excel (XLSX, CSV, ODS, PDF) için raporlama amacıyla DataFrame’leri geri aktarın.
Kısacası, kütüphane verileri raporlama için JSON’dan Excel’e taşımayı kolaylaştırırken, daha derin analizler için Pandas’ı kullanıyorsunuz. JsonUtility
JSON’u bir çalışma sayfasına aktarır ve JsonLayoutOptions
dizilerin ve iç içe geçmiş nesnelerin nasıl genişleyeceğini kontrol eder.
JSON’u DataFrame’e dönüştür.
Aspose.Cells, bir çalışma sayfasına JSON’u doğrudan aktarır. Ardından, bir Pandas DataFrame oluşturmak için başlık satırını ve veri satırlarını okursunuz.
Aşağıdaki adımları izleyerek JSON’u bir pandas DataFrame’ine dönüştürün:
- Bir çalışma kitabı oluşturun ve ilk çalışma sayfasını alın.
JsonLayoutOptions
‘ı dizileri tablolar olarak işleyecek şekilde yapılandırın.- JSON dizesini
0
satırında,0
sütununda içe aktarın. - İlk satırı sütun başlıkları olarak kullanın.
- Extract remaining rows as data.
- Bir Pandas DataFrame oluşturun.
Aşağıdaki kod örneği, Python’da JSON’u bir pandas DataFrame’e nasıl dönüştüreceğinizi göstermektedir:
import pandas as pd
import aspose.cells as ac
# Yeni bir çalışma kitabı oluşturun ve ilk çalışma sayfasını alın (0 tabanlı indeks)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Yaprakta JSON'un nasıl düzenleneceğini yapılandırın
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Örnek JSON dizisi basit nesnelerden oluşur.
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# JSON'u çalışma sayfasına satır=0, sütun=0 (A1 hücresi) ile başlayarak içe aktarın.
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Veri içeren ilk satırı bulun (bu bizim başlık satırımız olacak)
header_idx = ws.cells.min_data_row
# O satırdan başlık değerlerini çıkararak DataFrame sütun adları olarak kullanın
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Tüm sonraki satırları veri olarak çıkarın (başlık satırını atlayın)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Toplanan başlıklar ve satırlar kullanılarak DataFrame oluşturun.
df = pd.DataFrame(data, columns=columns)
# Display the result
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
Göreceli JSON’u Pandas DataFrame’e dönüştür.
Eğer JSON’unuzda iç içe geçmiş nesneler varsa, Aspose.Cells JSON’u JsonUtility kullanarak bir çalışma sayfasına içe aktarır, ardından bunu bir DataFrame’e aktarabilirsiniz. JsonLayoutOptions, dizilerin ve iç içe geçmiş nesnelerin nasıl genişletileceğini kontrol eder.
Aşağıdaki adımları izleyerek iç içe JSON’u bir pandas DataFrame’ine dönüştürün:
- Bir çalışma kitabı oluşturun ve ilk çalışma sayfasını seçin.
- Gerekli
JsonLayoutOptions
özelliklerini ayarlayın;arrayastable=True
,ignorearraytitle=True
,ignoreobjecttitle=True
vekeptschema=True
. - Yerel
0
, sütun0
‘daki iç içe JSON’u içe aktarın. - Kullanılan aralığı tespit edin ve başlık satırını tam kapsamda okuyun.
- Tüm sonraki satırları aynı aralıkta (sabit genişlikte) okuyun.
- Veri Çerçevesini oluşturun; isteğe bağlı olarak dtiplerini dönüştürün (örneğin,
total
‘ı sayısal olarak).
Aşağıdaki kod örneği, iç içe JSON’u Python’da bir pandas DataFrame’e dönüştürmenin nasıl yapılacağını göstermektedir:
import pandas as pd
import aspose.cells as ac
# Çalışma Kitabı oluşturun ve ilk çalışma sayfasını alın.
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Gösterim seçenekleri için iç içe 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
# Adım 3: İç içe JSON'unuz
nested = '''
{
"batch": "A1",
"orders": [
{"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
{"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
]
}
'''
# Aynı yukarıdaki seçeneklerle A1'de (satır=0, sütun=0) içe aktarın
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Kullanılan aralığı algıla
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
# Tam kullanılmakta olan sütun aralığındaki başlık satırını oku (sabit genişlik)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Başlıkları güvenli hale getirin: None/boş olanı \"Column{n}\" ile değiştirin ve str olarak dönüştürün.
columns = [
(str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
for idx, v in enumerate(raw_columns)
]
# Veri satırlarını aynı aralıkta okuyun (sabit genişlik hizalamayı garanti eder)
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 oluşturun
df = pd.DataFrame(data, columns=columns)
# İsteğe bağlı: sütun adlarını düzenleyin (örneğin, boşlukları değiştirin)
df.columns = [str(c).strip() for c in df.columns]
# Optional typing:
# - ZIP'leri string olarak tutun (ön ek sıfırlar önemlidir)
# - Toplamları sayısala çevirin (sayısal olmayanları NaN'ye zorlayın)
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
Not: Eğer
convertnumericordate=True
ayarını etkinleştirirseniz, sayısal gibi görünen dizeler (örneğin, toplamlar) sayılara dönüştürülebilir, ancak\"02108\"
gibi POSTA kodları baştaki sıfırları kaybedebilir. POSTA kodlarını dizeler olarak ihtiyacınız varsa bunuFalse
olarak ayarlayın.
Excel’i JSON üzerinden Pandas DataFrame’e dönüştürün.
Excel aralığını Aspose.Cells ile JSON formatına dışa aktarın, ardından bu JSON’u Pandas’a bir DataFrame olarak yükleyin. Bu, hizmetler veya boru hatları için yapılandırılmış bir JSON aktarımına ihtiyaç duyduğunuzda yararlıdır.
Aşağıdaki adımları izleyerek Excel’i bir pandas DataFrame’e JSON aracılığıyla dönüştürün:
- Yeni bir çalışma kitabı oluşturun, ilk çalışma sayfasını alın ve örnek değerler ekleyin.
- Varsayılanlarla
JsonSaveOptions
oluşturun. - Kullanılan aralığı
exportrangetojson()
yöntemi ile bir JSON dizesine aktarın. - JSON stringini bir DataFrame’e
pd.read_json(io.StringIO(jsontext))
metodu ile aktarın. - Veri Çerçevesini gerektiği gibi inceleyin veya işleyin.
Aşağıdaki kod örneği, Excel’in Python’da JSON aracılığıyla bir pandas DataFrame’ine nasıl dönüştürüleceğini göstermektedir:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Yeni bir çalışma kitabı oluşturun ve ilk çalışma sayfasına erişin.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Çalışma sayfasının hücrelerini alın
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"
# JSON kayıt seçeneklerini ayarlayın (basit bir tablo için varsayılanlar yeterlidir)
json_save_options = JsonSaveOptions()
# Kullanılan aralığı bir JSON dizesine aktarın.
# maxdisplayrange, veri içeren tam dikdörtgen bölgeyi alır.
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# JSON dizisini bir Pandas DataFrame'ine aktarın.
# Pandas doğrudan bir JSON string'ini ayrıştırabilir.
df = pd.read_json(io.StringIO(json_text))
# Veri Çerçevesini kullanın
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Get a Free License
Aspose.Cells için .NET üzerinden Python’u, ücretsiz geçici bir lisans uygulayarak özellik kısıtlamaları olmadan değerlendirin. Tüm işlevselliği açmak için geçici lisans sayfasını ziyaret edin; bunun içinde JSON içe aktarma (JsonUtility
), düzen kontrolü (JsonLayoutOptions
), şema koruması ve sayısal/tarih dönüştürme bulunmaktadır.
Ekstra Ücretsiz Kaynaklar
Aşağıdaki kaynakları JSON içe aktarma, düzenleme seçenekleri ve Aspose.Cells for Python ile diğer Excel manipülasyonları hakkında daha derinlemesine incelemek için kullanabilirsiniz.
Sonuç
JSON’u Pandas DataFrame’lerine dönüştürmek, Aspose.Cells for Python ile oldukça kolay hale geliyor. İç içe yapılar için güvenilir bir yönetim, şema stabilitesi seçenekleri ve gerektiğinde Excel’e aktarma için kolay bir yol sunuyorsunuz. Pandas’ın esnekliğini Aspose.Cells’teki JSON/Excel hattı ile birleştirerek veri işleme süreçlerinizi basitleştirin ve Python’da güçlü analizlerin kapısını açın.
Eğer sorularınız varsa, ücretsiz destek forumumuzu ziyaret edin. Size yardımcı olmaktan mutluluk duyarız.