Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - อ่านไฟล์ Excel ทั้งหมดในโฟลเดอร์เป็น Pandas DataFrame

ใช้โมดูล glob ค้นหาไฟล์ .xlsx ทั้งหมดในโฟลเดอร์ แล้ววนลูปอ่านด้วย pd.read_excel() รวมเป็น DataFrame เดียวได้ด้วย pd.concat()

ขั้นตอนการทำงาน

1. นำเข้าไลบรารี

import pandas as pd
import glob

2. กำหนด path และหาไฟล์ .xlsx

path = r"C:\Users\amit_\Desktop\"
filenames = glob.glob(path + "*.xlsx")
print('File names:', filenames)

3. วนลูปอ่านไฟล์ Excel ทุกไฟล์

for file in filenames:
    print(f"Reading file = {file}")
    df = pd.read_excel(file)
    print(df)

โค้ดตัวอย่างสมบูรณ์

import pandas as pd
import glob

path = r"C:\Users\amit_\Desktop\"
filenames = glob.glob(path + "*.xlsx")
print('File names:', filenames)

for file in filenames:
    print(f"Reading file = {file}")
    print(pd.read_excel(file))

ผลลัพธ์ตัวอย่าง

File names: ['C:\\Users\\amit_\\Desktop\\Sales1.xlsx', 'C:\\Users\\amit_\\Desktop\\Sales2.xlsx']

Reading file = C:\Users\amit_\Desktop\Sales1.xlsx
      Car    Place  UnitsSold
0    Audi  Bangalore         80
1  Porsche     Mumbai        110
2 RollsRoyce      Pune        100

Reading file = C:\Users\amit_\Desktop\Sales2.xlsx
      Car     Place  UnitsSold
0    BMW     Delhi          95
1 Mercedes  Hyderabad         80
2 Lamborghini Chandigarh         80

รวมไฟล์ Excel ทั้งหมดเป็น DataFrame เดียว

# วิธีแนะนำ: List comprehension + concat
dfs = [pd.read_excel(f) for f in filenames]
combined = pd.concat(dfs, ignore_index=True)

# หรือ Generator (ประหยัด RAM)
combined = pd.concat((pd.read_excel(f) for f in filenames), ignore_index=True)

# เพิ่มคอลัมน์แหล่งที่มา
dfs = [pd.read_excel(f).assign(source_file=f) for f in filenames]
combined = pd.concat(dfs, ignore_index=True)

พารามิเตอร์ read_excel ที่สำคัญ

พารามิเตอร์คำอธิบาย
sheet_nameชื่อชีท หรือ index (0-based) หรือ list หรือ None (ทุกชีท)
headerแถวที่เป็น header (default=0, None=ไม่มี header)
usecolsเลือกคอลัมน์เฉพาะ: "A:C" หรือ ['col1', 'col2']
dtypeบังคับชนิดข้อมูลคอลัมน์
engine'openpyxl' (xlsx), 'xlrd' (xls เก่า), 'odf' (ods)

⚠️ ข้อควรระวัง

  • ติดตั้ง engine: pip install openpyxl (สำหรับ .xlsx)
  • ไฟล์ .xls เก่า: pip install xlrd==1.2.0
  • ไฟล์ใหญ่: ใช้ chunksize ไม่ได้ใน read_excel ต้องอ่านชีทละชีท
  • Password protected: ไม่รองรับ ต้อง unlock ก่อน

Pathlib (Modern)

from pathlib import Path

path = Path(r"C:\Users\amit_\Desktop")
xlsx_files = path.glob("*.xlsx")

for file in xlsx_files:
    df = pd.read_excel(file)
    # process...