עבודה עם JSON ו-Pandas DataFrame היא דבר נפוץ בניתוח נתונים, דיווח וצינורות ETL. בעוד ש-Pandas מספקת readjson לפיצול בסיסי, היא עשויה להתקשות עם מבנים מקוננים עמוקים, קבצים גדולים מאוד או זרימות עבודה שמתחילות באקסל. כאן נכנסת Aspose.Cells for Python לתמונה. היא מספקת צינור עשיר של JSON ל-Excel, שאותו תוכל לשלב בקלות עם Pandas כדי לקבל DataFrames נקיים לניתוח. בפוסט בבלוג הזה, תלמד איך להמיר JSON ל-Pandas DataFrames בפייתון.

ספריית פייתון להמיר JSON ל-Pandas DataFrame

Aspose.Cells for Python via .NET הוא API חזק לגיליונות אלקטרוניים שאינו דורש את Microsoft Excel. מעבר לאוטומציה הקלאסית של Excel, הוא תומך בייבוא וייצוא JSON ישיר, מה שהופך אותו לאידיאלי כאשר אתם רוצים להמיר JSON למסגרת נתוני Pandas ולאחר מכן לשמור או לעבד את זה ב-Excel.

עם Aspose.Cells, אתה יכול:

  • ייבא JSON לגיליונות באמצעות JsonUtility, עם אפשרויות לטפל במערכים ובמבנים מקוננים.
  • להמיר תחומי גיליונות עבודה למסדי נתונים של פנדות לניתוח ולביקורת חזותית.
  • צור, טען וצור קשר עם JSON בתוך קבצי Excel, שמתאימים לצינורות אנליטיים.
  • ייצא את ה-DataFrames חזרה ל-Excel (XLSX, CSV, ODS, PDF) לצורך דיווח.

בקצרה, הספרייה מקלה על העברת נתונים מ-JJSON ל-Excel עבור דוחות, בזמן שאתה משתמש ב-Pandas לניתוחים מעמיקים. ה- JsonUtility מייבא JSON לגיליון עבודה, וה- JsonLayoutOptions שולט איך מערכים ואובייקטים מקוננים מורחבים.

Convert JSON to DataFrame

Aspose.Cells מייבא JSON ישירות לתוך גליונות עבודה. לאחר מכן אתה קורא את שורת הכותרת ושורות הנתונים כדי לבנות DataFrame של פנדס.

עקוב אחרי הצעדים למטה כדי להמיר JSON ל- pandas DataFrame:

  1. צור חוברת עבודה וקבל את גיליון העבודה הראשון.
  2. הגדר JsonLayoutOptions להתייחס למערכים כמסכים.
  3. ייבא את מחרוזת ה-JSON בשורה 0, עמודה 0.
  4. השתמש בשורה הראשונה ככותרות עמודות.
  5. Extract remaining rows as data.
  6. Build a Pandas DataFrame.

הדוגמה הבאה של הקוד מראה כיצד להמיר JSON ל- pandas DataFrame ב-Python:

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

# מיצוא ערכי כותרת משורה זו לשימוש sebagai שמות עמודות 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)

# Display the result
print(df)

Output

    id   name
0  1.0  Alice
1  2.0    Bob

Convert Nested JSON to Pandas DataFrame

אם ה- JSON שלך מכיל אובייקטים מקוננים, Aspose.Cells מייבא JSON לתוך גליון עבודה באמצעות JsonUtility, שאותו תוכל לייצא לאחר מכן ל- DataFrame. אפשרויות JsonLayout קובעות כיצד מערכים ואובייקטים מקוננים מורחבים.

עקוב אחר השלבים למטה כדי להמיר JSON מקונן לפנדס DataFrame:

  1. צור חוברת עבודה ובחר בגיליון הראשון.
  2. הגדר את מאפייני JsonLayoutOptions הנדרשים כמו arrayastable=True, ignorearraytitle=True, ignoreobjecttitle=True, ו- keptschema=True.
  3. Import the nested JSON at row 0, column 0.
  4. גלה את טווח השימוש וקרוא את שורת הכותרת לאורך כל הטווח.
  5. קרא את כל השורות הבאות על פני אותו טווח (רוחב קבוע).
  6. בנה את ה-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 (שורה=0, עמודה=0) באמצעות האפשרויות למעלה
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)

# Detect used range
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)]

# Make headers safe: replace None/blank with \"Column{n}\" and cast to 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)

# Build DataFrame
df = pd.DataFrame(data, columns=columns)

# אופציונלי: סידור שמות עמודות (למשל, החלפת רווחים)
df.columns = [str(c).strip() for c in df.columns]

# Optional typing:
# - שמרו על ZIPs כמחרוזות (אפסים מובילים חשובים)
# - המר את הסכומים למספריים (המר לא-מספריים ל- 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 כמחרוזות.

המרה של Excel ל-Pandas DataFrame באמצעות JSON

מיצוא כל טווח Excel ל-JSON עם Aspose.Cells, ואז טען את ה-JSON הזה לתוך Pandas כ-DataFrame. זה מועיל כאשר אתה צריך העברת JSON מובנית עבור שירותים או צינורות.

עקוב אחר הצעדים למטה כדי להמיר Excel ל- DataFrame של פנדס באמצעות JSON:

  1. צור חוברת עבודה חדשה, קבל את גיליון העבודה הראשון, והוסף ערכים לדוגמה.
  2. צור JsonSaveOptions עם ברירות מחדל.
  3. יֵש לְיַצֵא אֶת הַטָּוּחַ שֶׁהִשְׁתַּמֵּשׁ לְמוֹשֶׁקֶת JSON עִם שִׁיטַת exportrangetojson().
  4. קרא את מחרוזת ה-JSON לתוך DataFrame באמצעות השיטה pd.readjson(io.StringIO(jsontext)).
  5. בדוק או עבד את ה-DataFrame לפי הצורך.

הדוגמה הבאה מציגה כיצד להמיר Excel ל- pandas DataFrame באמצעות JSON ב-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

# 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 (ברירות המחדל בסדר עבור טבלה פשוטה)
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 עבור Python באמצעות .NET ללא מגבלות תכונה על ידי יישום רישיון זמני חינם. בקר בדף temporary license page כדי unlock פונקציונליות מלאה, כולל ייבוא JSON (JsonUtility), בקרת פריסה (JsonLayoutOptions), שמירת סכימה, וכן המרה מספרית/תאריכית.

משאבים חינמיים נוספים

אתה יכול להשתמש במשאבים למטה כדי להיכנס לעומק של ייבוא JSON, אפשרויות פריסה, ומניפולציות אחרות ב-Excel עם Aspose.Cells עבור פייתון.

סיכום

המרת JSON למסגרות נתונים של Pandas הופכת לפשוטה עם Aspose.Cells עבור Python. אתה מקבל טיפול מהימן במבנים מקוננים, אפשרויות ליציבות סכימטית, ונתיב קל ליצוא ל-Excel כאשר יש בכך צורך. שלב את הגמישות של Pandas עם צנרת JSON/Excel ב-Aspose.Cells כדי לפשט את עיבוד הנתונים ולפתוח ניתוחים רבי עוצמה ב-Python.

אם יש לך שאלות, בקר בפורום התמיכה free support forum.אנו שמחים לעזור לך.

ראה גם