العمل مع JSON و Pandas DataFrame شائع في تحليل البيانات، والتقارير، وعمليات ETL. بينما يوفر Pandas readjson لعملية التحليل الأساسية، إلا أنه قد يواجه صعوبة مع الهياكل المتداخلة بعمق، أو الملفات الكبيرة جدًا، أو تدفقات العمل التي تعتمد على Excel. هنا تأتي مساعدتنا من Aspose.Cells لبايثون. إنه يوفر خط أنابيب غني لتحويل JSON إلى Excel، والذي يمكنك دمجه بسهولة مع Pandas للحصول على DataFrames نظيفة للتحليل. في هذا المنشور في المدونة، سوف تتعلم كيفية تحويل JSON إلى DataFrames في Pandas باستخدام بايثون.
مكتبة بايثون لتحويل JSON إلى DataFrame من Pandas
Aspose.Cells for Python via .NET هو واجهة برمجة تطبيقات جداول بيانات قوية لا تتطلب Microsoft Excel. بالإضافة إلى أتمتة Excel التقليدية، فإنه يدعم استيراد وتصدير JSON بشكل مباشر، مما يجعله مثالياً عندما تريد تحويل JSON إلى DataFrame في Pandas ومن ثم حفظه أو معالجته في Excel.
مع Aspose.Cells، يمكنك:
- استيراد JSON إلى أوراق العمل باستخدام
JsonUtility، مع خيارات للتعامل مع المصفوفات والهياكل المتداخلة. - تحويل نطاقات ورقة العمل إلى DataFrames من Pandas للتحليل والتصور.
- إنشاء وتحميل ومعالجة JSON داخل ملفات Excel، والتي تناسب أنابيب التحليلات.
- تصدير DataFrames مرة أخرى إلى Excel (XLSX، CSV، ODS، PDF) للتقارير.
باختصار، تسهل المكتبة نقل البيانات من JSON إلى Excel للتقارير، بينما تستخدم Pandas للتحليل الأعمق. يقوم JsonUtility باستيراد JSON إلى ورقة العمل، وJsonLayoutOptions يتحكم في كيفية توسيع المصفوفات والكائنات المتداخلة.
Convert JSON to DataFrame
Aspose.Cells تستورد JSON مباشرةً إلى ورقة العمل. ثم تقوم بقراءة صف الرأس وصفوف البيانات لبناء DataFrame باستخدام Pandas.
اتبع الخطوات أدناه لتحويل JSON إلى DataFrame في pandas:
- إنشاء دفتر عمل والحصول على الورقة الأولى.
- قم بتكوين
JsonLayoutOptionsلمعالجة المصفوفات كجداول. - استورد سلسلة JSON في الصف
0، العمود0. - استخدم الصف الأول كعناوين للأعمدة.
- Extract remaining rows as data.
- قم بإنشاء DataFrame باستخدام Pandas.
يوضح مثال الشيفرة التالي كيفية تحويل JSON إلى DataFrame من pandas في بايثون:
import pandas as pd
import aspose.cells as ac
# أنشئ دفتر عمل جديد واحصل على ورقة العمل الأولى (بناءً على فهرس يبدأ من 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# قم بتكوين كيفية تنظيم JSON في ورقة العمل.
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# مثال على مصفوفة JSON من كائنات بسيطة
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# قم باستيراد JSON إلى الورقة بدءًا من الصف = 0، العمود = 0 (الخانة A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# حدد الصف الأول الذي يحتوي على بيانات (هذا سيكون صف الرأس لدينا)
header_idx = ws.cells.min_data_row
# استخراج قيم العناوين من ذلك الصف لاستخدامها كأسماء أعمدة في DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# استخراج جميع الصفوف التالية كبيانات (تخطي صف الرأس)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# قم ببناء DataFrame باستخدام العناوين والصفوف التي تم جمعها.
df = pd.DataFrame(data, columns=columns)
# عرض النتيجة
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
تحويل JSON متداخل إلى إطار بيانات Pandas
إذا كان JSON الخاص بك يحتوي على كائنات متداخلة، فإن Aspose.Cells يستورد JSON إلى ورقة العمل باستخدام JsonUtility، والتي يمكنك بعد ذلك تصديرها إلى DataFrame. تتحكم JsonLayoutOptions في كيفية توسيع المصفوفات والكائنات المتداخلة.
اتبع الخطوات أدناه لتحويل JSON متداخل إلى DataFrame باستخدام pandas:
- إنشاء مصنف واختيار ورقة العمل الأولى.
- قم بتعيين الخصائص المطلوبة لـ
JsonLayoutOptionsمثلarrayastable=True،ignorearraytitle=True،ignoreobjecttitle=True، وkeptschema=True. - استورد JSON المتداخل في الصف
0، العمود0. - كشف النطاق المستخدم وقراءة صف العنوان عبر النطاق الكامل.
- اقرأ جميع الصفوف التالية عبر نفس النطاق (عرض ثابت).
- قم ببناء DataFrame؛ اختياريًا قم بتحويل أنواع البيانات (على سبيل المثال،
totalإلى رقمي).
يظهر المثال البرمجي التالي كيفية تحويل JSON متداخل إلى DataFrame في pandas في بايثون:
import pandas as pd
import aspose.cells as ac
# إنشاء دفتر العمل والحصول على ورقة العمل الأولى
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# خيارات التخطيط لـ 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
# الخطوة 3: 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"}}
]
}
'''
# استورد في A1 (row=0, col=0) باستخدام الخيارات أعلاه
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# كشف النطاق المستخدم
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
# اقرأ صف الرأس عبر امتداد العمود المستخدم الكامل (عرض ثابت)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# اجعل العناوين آمنة: استبدل None/الفارغ بـ "عمود{n}" و قم بتحويله إلى 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)
]
# قم بقراءة صفوف البيانات عبر نفس النطاق (تضمن العرض الثابت المحاذاة)
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)
# بناء إطار بيانات
df = pd.DataFrame(data, columns=columns)
# اختياري: ترتيب أسماء الأعمدة (على سبيل المثال، استبدال المسافات)
df.columns = [str(c).strip() for c in df.columns]
# إدخال اختياري:
# - احتفظ بالرموز البريدية كسلاسل (الأصفار السابقة مهمة)
# - تحويل الإجماليات إلى قيم عددية (تحويل غير العددية إلى 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
ملاحظة: إذا قمت بتمكين
convertnumericordate=True، فقد تتحول السلاسل التي تبدو كأرقام (مثل، الإجماليات) إلى أرقام، لكن رموز ZIP مثل\"02108\"قد تفقد الأصفار السابقة. احتفظ بهاFalseإذا كنت بحاجة إلى رموز ZIP كسلاسل.
تحويل إكسل إلى إطار بيانات Pandas عبر JSON
تصدير أي نطاق Excel إلى JSON باستخدام Aspose.Cells، ثم تحميل تلك البيانات JSON إلى Pandas كـ DataFrame. هذا مفيد عندما تحتاج إلى تسليم JSON منظم للخدمات أو خطوط الأنابيب.
اتبع الخطوات أدناه لتحويل Excel إلى DataFrame في pandas عبر JSON:
- قم بإنشاء دفتر عمل جديد، واحصل على ورقة العمل الأولى، وأضف قيمًا عينة.
- إنشاء
JsonSaveOptionsبالقيم الافتراضية. - قم بتصدير النطاق المستخدم إلى سلسلة JSON باستخدام طريقة
exportrangetojson(). - اقرأ سلسلة JSON في DataFrame باستخدام طريقة
pd.readjson(io.StringIO(jsontext)). - افحص أو عالج DataFrame حسب الحاجة.
يوضح مثال الشيفرة أدناه كيفية تحويل إكسل إلى DataFrame من pandas عبر JSON في بايثون:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# أنشئ مصنفاً جديداً وادخل إلى ورقة العمل الأولى
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# احصل على خلايا ورقة العمل
cells = worksheet.cells
# قم بملء جدول صغير (رؤوس + صفوف)
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 (الإعدادات الافتراضية جيدة لجدول بسيط)
json_save_options = JsonSaveOptions()
# صدر النطاق المستخدم إلى سلسلة JSON
# maxdisplayrange يستحوذ على المنطقة المستطيلة الكاملة التي تحتوي على البيانات
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# اقرأ سلسلة JSON في إطار بيانات Pandas
# يمكن لـ Pandas تحليل سلسلة JSON مباشرة
df = pd.read_json(io.StringIO(json_text))
# استخدم DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
احصل على ترخيص مجاني
قم بتقييم Aspose.Cells for Python عبر .NET دون قيود على الميزات من خلال تطبيق رخصة مؤقتة مجانية. زر صفحة temporary license page لفتح الوظائف الكاملة، بما في ذلك استيراد JSON (JsonUtility)، التحكم في التخطيط (JsonLayoutOptions)، الحفاظ على المخطط، وتحويل الأرقام / التاريخ.
موارد مجانية إضافية
يمكنك استخدام الموارد أدناه للتعمق في استيراد JSON، خيارات التخطيط، وغيرها من التلاعبات في Excel باستخدام Aspose.Cells لبايثون.
خاتمة
تحويل JSON إلى DataFrames في Pandas يصبح سهلاً مع Aspose.Cells for Python. تحصل على معالجة موثوقة للهياكل المتداخلة، وخيارات لاستقرار المخطط، وطريق سهل لتصدير Excel عند الحاجة. دمج مرونة Pandas مع خط أنابيب JSON/Excel في Aspose.Cells لتبسيط معالجة البيانات وفتح تحليل قوي في Python.
إذا كان لديك أسئلة، يرجى زيارة منتدى الدعم المجاني.نحن سعداء لمساعدتك.
