ใช้โมดูล 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...