Pandas & NumPy Academy · บทเรียน

การอ่านไฟล์ Excel และ JSON

นำเข้าสมุดงาน Excel ด้วย pd.read_excel และระเบียน JSON ด้วย pd.read_json พร้อมรับมือรูปแบบที่แตกต่างกันทั่วไป

บทเรียน 2 จาก 413 ขั้นตอน

การอ่านไฟล์ Excel และ JSON เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุผลที่ Excel และ JSON มีความสำคัญ

แม้ CSV จะเป็นรูปแบบสากล แต่ไฟล์ Excel (.xlsx/.xls) ก็เป็นรูปแบบหลักสำหรับข้อมูลธุรกิจที่แบ่งปันผ่านอีเมลและเครื่องมือทำรายงาน ส่วน JSON เป็นรูปแบบดั้งเดิมของ REST API และฐานข้อมูล NoSQL Pandas มี pd.read_excel() และ pd.read_json() ซึ่งมีส่วนติดต่อการใช้งานคล้ายตัวอ่าน CSV ดังนั้นจึงสามารถนำทักษะไปใช้ต่อได้โดยตรง

import pandas as pd

# The three most common load functions share the same philosophy
df_csv   = pd.read_csv('data.csv')
df_excel = pd.read_excel('data.xlsx')
df_json  = pd.read_json('data.json')

การติดตั้งกลไกสำหรับ Excel

การอ่านไฟล์ Excel ต้องใช้กลไกดังนี้: openpyxl สำหรับไฟล์ .xlsx (รูปแบบสมัยใหม่) และ xlrd สำหรับไฟล์ .xls รุ่นเก่า ติดตั้งด้วย pip install openpyxl Pandas จะเลือกกลไกโดยอัตโนมัติตามนามสกุลไฟล์ สำหรับการเขียน ให้ใช้ xlsxwriter หากต้องการจัดรูปแบบขั้นสูง หากยังไม่ได้ติดตั้งกลไกไว้ read_excel() จะทำให้เกิด ModuleNotFoundError

# Install the required engine:
# pip install openpyxl          # for .xlsx (modern)
# pip install xlrd==1.2.0       # for .xls (legacy)

import pandas as pd
df = pd.read_excel('report.xlsx', engine='openpyxl')

การเลือกแผ่นงานด้วย sheet_name

สมุดงาน Excel อาจมีหลายแผ่นงาน sheet_name= ใช้ระบุแผ่นงานที่จะอ่าน โดยส่งสตริง (ชื่อแผ่นงาน) จำนวนเต็ม (ตำแหน่งที่เริ่มนับจาก 0) หรือรายการเพื่ออ่านหลายแผ่นงานเป็นพจนานุกรม หากส่ง sheet_name=None จะอ่าน ทุก แผ่นงานเป็นพจนานุกรมที่ใช้ชื่อแผ่นงานเป็นคีย์ การตรวจสอบแผ่นงานที่มีอยู่ด้วย pd.ExcelFile('file.xlsx').sheet_names เป็นจุดเริ่มต้นที่ดี

import pandas as pd

# Read the second sheet
df = pd.read_excel('workbook.xlsx', sheet_name=1)

# Read by name
df = pd.read_excel('workbook.xlsx', sheet_name='Sales')

# Inspect available sheets
xl = pd.ExcelFile('workbook.xlsx')
print(xl.sheet_names)  # ['Summary', 'Sales', 'Costs']

พารามิเตอร์ Excel ที่พบบ่อย

pd.read_excel() รองรับพารามิเตอร์ส่วนใหญ่แบบเดียวกับ read_csv() ได้แก่ header=, index_col=, usecols=, skiprows=, dtype= และ nrows= สำหรับ Excel นั้น usecols ยังรับสตริงช่วงคอลัมน์แบบ Excel เช่น 'A:C' หรือ 'A,C,E' ได้ด้วย ซึ่งสะดวกเมื่อทราบตัวอักษรคอลัมน์จากเค้าโครงสเปรดชีต

import pandas as pd

df = pd.read_excel(
    'sales_report.xlsx',
    sheet_name='Q1',
    header=2,          # header is on row 3 (0-indexed)
    usecols='A:D',     # Excel column range
    skiprows=[3, 4],   # skip rows 4 and 5
    nrows=100
)

การอ่าน JSON: รูปแบบ orient

pd.read_json() จะอ่าน JSON เป็น DataFrame พารามิเตอร์ orient= ใช้ระบุโครงสร้าง JSON ได้แก่ 'records' (รายการพจนานุกรมของแต่ละแถว), 'columns' (พจนานุกรมของอาร์เรย์คอลัมน์ ซึ่งเป็นค่าเริ่มต้น), 'index' (พจนานุกรมของพจนานุกรมแถวที่ใช้ดัชนีเป็นคีย์) หรือ 'values' (อาร์เรย์ดิบ) API แบบ REST ส่วนใหญ่ส่งข้อมูลในรูปแบบ 'records' ดังนั้นควรตรวจสอบ JSON ดิบก่อนเสมอเพื่อกำหนด orient ที่ถูกต้อง

import pandas as pd

# REST API response: list of records
json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
df = pd.read_json(json_str, orient='records')
print(df)

การอ่าน JSON จากไฟล์หรือ URL

pd.read_json() รับเส้นทางไฟล์ URL หรือสตริง JSON ได้โดยตรง สำหรับ JSON ที่ซ้อนกันลึก เช่น การตอบกลับจาก API ที่มีออบเจ็กต์ซ้อนกัน ให้ใช้ json_normalize() จากโมดูล pandas.io.json แทน ซึ่งจะแปลงพจนานุกรมที่ซ้อนกันให้เป็นคอลัมน์ที่มีชื่อคั่นด้วยจุด

import pandas as pd
from pandas.io.json import json_normalize

# From a file
df = pd.read_json('events.json')

# Flatten nested JSON
nested = [{'id': 1, 'user': {'name': 'A', 'age': 30}},
          {'id': 2, 'user': {'name': 'B', 'age': 25}}]
df_flat = json_normalize(nested)
print(df_flat.columns.tolist())  # ['id', 'user.name', 'user.age']

รูปแบบ JSON Lines

JSON Lines (NDJSON) จัดเก็บออบเจ็กต์ JSON หนึ่งรายการต่อบรรทัด ทำให้สตรีมชุดข้อมูลขนาดใหญ่ได้ง่าย ใช้ pd.read_json('file.jsonl', lines=True) เพื่อแยกวิเคราะห์รูปแบบนี้ รูปแบบดังกล่าวพบได้บ่อยในไฟล์บันทึก การส่งออกจาก Kafka และรูปแบบชุดข้อมูลสำหรับการเรียนรู้ของเครื่อง แต่ละบรรทัดต้องเป็นออบเจ็กต์ JSON ที่ถูกต้อง หากมีบรรทัดที่รูปแบบไม่ถูกต้อง การอ่านจะล้มเหลว

import pandas as pd

# file.jsonl contains one JSON record per line:
# {"id": 1, "event": "click"}
# {"id": 2, "event": "view"}
df = pd.read_json('events.jsonl', lines=True)
print(df)

การจัดการการแยกวิเคราะห์วันที่ใน JSON

JSON ไม่มีชนิดวันที่ในตัว วันที่จึงจัดเก็บเป็นสตริงหรือการประทับเวลา Unix (มิลลิวินาทีหรือวินาทีนับจากยุคเริ่มต้น) ตั้งค่า convert_dates=True (ค่าเริ่มต้น) เพื่อให้ Pandas พยายามแปลงคอลัมน์ที่มีชื่อประกอบด้วย 'date', 'time' หรือ 'at' โดยอัตโนมัติ สำหรับชื่อคอลัมน์หรือการประทับเวลาแบบกำหนดเอง ให้แปลงอย่างชัดเจนด้วย pd.to_datetime(df['col'], unit='ms')

import pandas as pd

# Unix milliseconds timestamp column
df = pd.read_json('events.json', orient='records')
df['created_at'] = pd.to_datetime(df['created_at'], unit='ms')
print(df['created_at'].dtype)  # datetime64[ns]

เปรียบเทียบข้อควรระวังของ Excel และ JSON

ข้อควรระวังของ Excel: เซลล์ที่ผสานทำให้เกิดแถว NaN, แถวหรือคอลัมน์ที่ซ่อนอยู่จะถูกรวมอยู่ในผลลัพธ์ และ การจัดรูปแบบตัวเลข (เช่น วันที่ที่จัดเก็บเป็นค่าทศนิยม) ต้องได้รับการแก้ไขหลังโหลด ข้อควรระวังของ JSON: การมีฟิลด์ไม่สม่ำเสมอระหว่างระเบียนทำให้เกิด NaN และ คีย์จำนวนเต็มในออบเจ็กต์ JSON จะกลายเป็นชื่อคอลัมน์แบบสตริง

import pandas as pd

# Excel date stored as float (Excel serial date)
df = pd.read_excel('old_report.xls')
# If dates appear as floats (e.g., 44927.0), convert:
# from xlrd import xldate_as_datetime
# df['date'] = df['date'].apply(lambda x: xldate_as_datetime(x, 0))

pd.ExcelFile สำหรับหลายแผ่นงาน

เมื่อต้องอ่านหลายแผ่นงานจากไฟล์เดียวกันอย่างมีประสิทธิภาพ ให้เปิดตัวจัดการบริบท pd.ExcelFile แล้วเรียก parse(sheet_name) สำหรับแต่ละแผ่นงาน วิธีนี้หลีกเลี่ยงการเปิดและแยกวิเคราะห์ไฟล์ซ้ำสำหรับแต่ละแผ่นงาน ซึ่งสำคัญสำหรับสมุดงานขนาดใหญ่ ตัวจัดการบริบทจะปิดตัวจัดการไฟล์โดยอัตโนมัติ

import pandas as pd

with pd.ExcelFile('annual_report.xlsx') as xf:
    df_q1 = xf.parse('Q1')
    df_q2 = xf.parse('Q2')

print(df_q1.shape, df_q2.shape)

การใช้ requests เพื่อโหลด API JSON

สำหรับข้อมูลจาก API แบบ REST ให้ใช้ไลบรารี requests เพื่อดึง JSON แล้วส่งออบเจ็กต์ Python ที่แยกวิเคราะห์แล้วให้กับ pd.DataFrame() หรือ pd.json_normalize() รูปแบบนี้แยกส่วนที่เกี่ยวข้องกับ HTTP ออกจากส่วนที่เกี่ยวข้องกับการแยกวิเคราะห์ข้อมูล และช่วยให้คุณเข้าถึงส่วนหัว การยืนยันตัวตน และการแบ่งหน้าได้ก่อนที่ Pandas จะประมวลผลข้อมูล

import pandas as pd
import requests

response = requests.get('https://api.example.com/records')
data = response.json()   # Python list of dicts
df = pd.DataFrame(data)
print(df.head())

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับการอ่านไฟล์ Excel และ JSON ด้วย Pandas จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า pd.read_excel() ใช้อ่านไฟล์ xlsx และให้คุณระบุแผ่นงานที่จะโหลดผ่าน sheet_name ได้ pd.read_json() รองรับโครงสร้าง JSON หลายรูปแบบที่ควบคุมด้วยพารามิเตอร์ orient และ json_normalize() จะแปลงออบเจ็กต์ JSON ที่ซ้อนกันให้เป็น DataFrame แบบแบน บทถัดไป เราจะส่งออก DataFrames เป็นไฟล์ CSV และ Excel เพื่อแบ่งปันและประมวลผลต่อ

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การอ่านไฟล์ Excel และ JSON” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การอ่านไฟล์ Excel และ JSON” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านไฟล์ Excel และ JSON”

นำเข้าสมุดงาน Excel ด้วย pd.read_excel และระเบียน JSON ด้วย pd.read_json พร้อมรับมือรูปแบบที่แตกต่างกันทั่วไป คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การอ่านไฟล์ Excel และ JSON” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม

ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ CSV
  2. การอ่านไฟล์ Excel และ JSON
  3. การเขียน DataFrames ลงไฟล์
  4. การอ่านจาก URL และ StringIO
← กลับไปที่ Pandas & NumPy Academy