کار کردن با JSON و DataFrame های Pandas در تحلیل داده، گزارش‌گیری و لوله‌های ETL رایج است. در حالی که Pandas readjson را برای تجزیه اولیه فراهم می‌کند، ممکن است در ساختارهای عمیق تو در تو، فایل‌های بسیار بزرگ یا گردش کار Excel-first دچار مشکل شود. اینجا جایی است که Aspose.Cells for Python کمک می‌کند. این ابزار یک لوله غنی JSON به Excel ارائه می‌دهد که می‌توانید به راحتی با Pandas ادغام کنید تا DataFrame های تمیز برای تحلیل به دست آورید. در این پست وبلاگ، خواهید آموخت که چگونه JSON را به DataFrame های Pandas در Python تبدیل کنید.

کتابخانه پایتون برای تبدیل JSON به DataFrame پانداها

Aspose.Cells for Python via .NET یک API قدرتمند برای صفحه‌گسترده است که به مایکروسافت اکسل نیاز ندارد. فراتر از خودکارسازی کلاسیک اکسل، این API از واردات و صادرات مستقیم JSON پشتیبانی می‌کند، که آن را برای زمانی که می‌خواهید JSON را به یک DataFrame پاندا تبدیل کنید و بعداً آن را در اکسل ذخیره یا پردازش کنید، ایده‌آل می‌سازد.

با Aspose.Cells، شما می‌توانید:

  • وارد کردن JSON به ورق های کار با استفاده از JsonUtility، با گزینه هایی برای مدیریت آرایه ها و ساختارهای تو در تو.
  • محدوده‌های ورق کار را به DataFrame های Pandas برای تحلیل و بصری‌سازی تبدیل کنید.
  • JSON را در فایل‌های اکسل ایجاد، بارگذاری و مدیریت کنید که مناسب جریان‌های تحلیلی است.
  • صادر کردن DataFrame ها به اکسل (XLSX، CSV، ODS، PDF) برای گزارش گیری.

کلاً، کتابخانه این امکان را فراهم می‌کند که داده‌ها را به سادگی از JSON به Excel برای گزارش‌گیری منتقل کنید، در حالی که برای تحلیل عمیق‌تر از Pandas استفاده می‌کنید. JsonUtility JSON را به یک شیت وارد می‌کند و JsonLayoutOptions کنترل می‌کند که چگونه آرایه‌ها و اشیاء تو در تو گسترش یابند.

تبدیل JSON به DataFrame

Aspose.Cells به طور مستقیم JSON را به یک Worksheet وارد می‌کند. سپس شما ردیف هدر و ردیف‌های داده را برای ساخت یک DataFrame در Pandas می‌خوانید.

مراحل زیر را برای تبدیل JSON به DataFrame در pandas دنبال کنید:

  1. یک دفتر کار ایجاد کنید و نخستین برگه را بگیرید.
  2. تنظیم JsonLayoutOptions برای اینکه آرایه‌ها را به عنوان جدول‌ها در نظر بگیرد.
  3. رشته JSON را در ردیف 0، ستون 0 وارد کنید.
  4. از ردیف اول به عنوان سر ستون‌ها استفاده کنید.
  5. باقی‌مانده سطرها را به عنوان داده استخراج کنید.
  6. یک DataFrame در Pandas بسازید.

کد نمونه زیر نشان می‌دهد که چگونه JSON را به یک DataFrame در پایتون تبدیل کنیم:

import pandas as pd
import aspose.cells as ac

# یک دفتر کار جدید ایجاد کنید و اولین ورق کاری را بگیرید (شاخص مبتنی بر ۰)
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 تو در تو به DataFrame پانداس

اگر JSON شما شامل اشیاء تو در تو باشد، Aspose.Cells JSON را با استفاده از JsonUtility به یک شیت کار وارد می‌کند، که سپس می‌توانید آن را به یک DataFrame صادر کنید. JsonLayoutOptions کنترل می‌کند که چگونه آرایه‌ها و اشیاء تو در تو گسترش می‌یابند.

دستورالعمل‌های زیر را برای تبدیل JSON تو در تو به یک DataFrame در پانداس دنبال کنید:

  1. یک دفتر کار ایجاد کنید و برگه اول را انتخاب کنید.
  2. ویژگی‌های لازم JsonLayoutOptions را تنظیم کنید، مانند arrayastable=True، ignorearraytitle=True، ignoreobjecttitle=True و keptschema=True.
  3. محصول json تو در تو در ردیف 0، ستون 0 را وارد کنید.
  4. محدوده استفاده شده را شناسایی کنید و ردیف هدر را در تمام طول آن بخوانید.
  5. تمام سطرهای بعدی را در طول همان فاصله (عرض ثابت) بخوانید.
  6. داده‌فریم را بسازید؛ به‌طور اختیاری نوع داده‌ها را تبدیل کنید (به‌عنوان مثال، total را به عددی تبدیل کنید).

کد مثال زیر نشان می‌دهد که چگونه JSON تو در تو را به یک DataFrame پاندا در پایتون تبدیل کنیم:

import pandas as pd
import aspose.cells as ac

# Workbook را ایجاد کنید و اولین ورق کاری را بگیرید
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

# مرحله ۳: 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 وارد کنید (ردیف=0، ستون=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)

# DataFrame را بسازید
df = pd.DataFrame(data, columns=columns)

# اختیاری: نام‌های ستون را تمیز کنید (به عنوان مثال، فضاها را جایگزین کنید)
df.columns = [str(c).strip() for c in df.columns]

# Optional typing:
# - کد پستی را به صورت رشته نگه‌دارید (صفرهای اولیه مهم هستند)
# - مجموع‌ها را به عددی تبدیل کنید (غیر عددی‌ها را به 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 را فعال کنید، رشته‌های شبیه عدد (مانند مجموع‌ها) ممکن است به اعداد تبدیل شوند، اما کدهای پستی مانند \"02108\" ممکن است صفرهای ابتدایی خود را از دست بدهند. اگر به کدهای پستی به عنوان رشته نیاز دارید، آن را False نگه دارید.

Excel را به DataFrame پاندا از طریق JSON تبدیل کنید.

هر محدوده Excel را با Aspose.Cells به JSON صادر کنید، سپس آن JSON را به عنوان یک DataFrame در Pandas بارگذاری کنید. این برای زمانی مفید است که شما نیاز به انتقال JSON ساختار یافته برای خدمات یا خطوط لوله داشته باشید.

به مراحل زیر برای تبدیل اکسل به DataFrame پانداس از طریق JSON توجه کنید:

  1. یک دفتر کار جدید ایجاد کنید، اولین شیت را دریافت کنید و مقادیر نمونه را اضافه کنید.
  2. JsonSaveOptions را با تنظیمات پیش‌فرض ایجاد کنید.
  3. محدوده استفاده شده را به یک رشته JSON با استفاده از روش exportrangetojson() صادر کنید.
  4. جیسون را با استفاده از روش pd.readjson(io.StringIO(jsontext)) به یک DataFrame بخوانید.
  5. دیتافریم را مطابق با نیاز بررسی یا پردازش کنید.

مثال کد زیر نشان می‌دهد که چگونه می‌توان Excel را از طریق JSON به یک DataFrame در pandas در Python تبدیل کرد:

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 را به یک DataFrame در 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 را بدون محدودیت‌های ویژگی با استفاده از یک مجوز موقتی رایگان ارزیابی کنید. برای آنلاک کردن تمام امکانات، از جمله واردات JSON (JsonUtility)، کنترل لایه‌بندی (JsonLayoutOptions)، حفظ طرح‌واره و تبدیل عددی/تاریخی، به صفحه مجوز موقت مراجعه کنید.

منابع رایگان اضافی

شما می‌توانید از منابع زیر استفاده کنید تا بیشتر به وارد کردن JSON، گزینه‌های چیدمان و سایر تغییرات در اکسل با Aspose.Cells برای پایتون بپردازید.

نتیجه گیری

تبدیل JSON به DataFrame های Pandas با Aspose.Cells for Python بسیار آسان می‌شود. شما مدیریت قابل اعتمادی برای ساختارهای تو در تو، گزینه‌هایی برای ثبات طرح و یک مسیر آسان برای صادرات به Excel در صورت نیاز دریافت می‌کنید. انعطاف‌پذیری Pandas را با خط لوله JSON/Excel در Aspose.Cells ترکیب کنید تا پردازش داده‌ها را ساده کرده و تجزیه و تحلیل قدرتمندی را در Python آزاد کنید.

اگر سوالی دارید، به free support forum ما مراجعه کنید. ما خوشحالیم که به شما کمک کنیم.

همچنین ببینید