Trong bài viết này, chúng ta sẽ học cách đọc file Excel trong Python bằng Pandas read_excel().

Chúng ta có thể sử dụng hàm read_excel() của mô-đun pandas để đọc dữ liệu từ tệp Excel và lưu vào một đối tượng DataFrame. Trong Excel, dữ liệu được tổ chức dưới dạng bảng hai chiều, và DataFrame cũng mô phỏng chính xác cấu trúc bảng hai chiều này.
Ví dụ về pandas read_excel()
Giả sử chúng ta có một tệp Excel với hai sheet: Employees và Cars. Hàng đầu tiên chứa tiêu đề của bảng.

Dữ liệu các sheet trong tệp Excel
Ví dụ sau minh họa cách đọc dữ liệu từ sheet “Employees” và in nội dung của nó ra màn hình.
import pandas
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Employees')
# print whole sheet data
print(excel_data_df)
Kết quả:
EmpID EmpName EmpRole
0 1 Pankaj CEO
1 2 David Lee Editor
2 3 Lisa Ray Author
Tham số đầu tiên là tên tệp Excel.
Tham số sheet_name xác định tên sheet cần đọc từ tệp Excel.
Khi in đối tượng DataFrame, kết quả là một bảng hai chiều, trông tương tự như nội dung trong bảng tính Excel.
Danh sách tiêu đề cột trong bảng tính Excel
Chúng ta có thể lấy danh sách các tiêu đề cột bằng thuộc tính columns của đối tượng DataFrame.
print(excel_data_df.columns.ravel())
Kết quả:
['EmpID' 'EmpName' 'EmpRole']
In dữ liệu của một cột
Chúng ta có thể truy xuất dữ liệu của một cột và chuyển đổi nó thành danh sách các giá trị như sau:
print(excel_data_df['EmpName'].tolist())
Kết quả:
['Pankaj', 'David Lee', 'Lisa Ray']
Sử dụng usecols với read_excel()
Chúng ta có thể chỉ định các tên cột cần đọc từ tệp Excel. Đây là giải pháp hiệu quả khi bạn chỉ quan tâm đến một số cột cụ thể trong bảng tính.
import pandas
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Cars', usecols=['Car Name', 'Car Price'])
print(excel_data_df)
Kết quả:
Car Name Car Price
0 Honda City 20,000 USD
1 Bugatti Chiron 3 Million USD
2 Ferrari 458 2,30,000 USD
Đọc tệp Excel không có hàng tiêu đề
Nếu bảng tính Excel không có hàng tiêu đề, bạn có thể đặt tham số header thành None:
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Numbers', header=None)
Ngược lại, nếu truyền một giá trị nguyên cho header (ví dụ 3), thì hàng thứ 3 sẽ được xử lý làm hàng tiêu đề, và dữ liệu sẽ được đọc bắt đầu từ hàng ngay sau đó. Tất cả dữ liệu nằm trước hàng tiêu đề sẽ bị bỏ qua.
Chuyển đổi Sheet Excel sang Dict, CSV và JSON
Đối tượng DataFrame cung cấp nhiều phương thức tiện ích để chuyển đổi dữ liệu dạng bảng sang các định dạng Dict, CSV hoặc JSON.
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Cars', usecols=['Car Name', 'Car Price'])
print('Excel Sheet to Dict:', excel_data_df.to_dict(orient='record'))
print('Excel Sheet to JSON:', excel_data_df.to_json(orient='records'))
print('Excel Sheet to CSV:\\n', excel_data_df.to_csv(index=False))
Kết quả:
Excel Sheet to Dict: [{'Car Name': 'Honda City', 'Car Price': '20,000 USD'}, {'Car Name': 'Bugatti Chiron', 'Car Price': '3 Million USD'}, {'Car Name': 'Ferrari 458', 'Car Price': '2,30,000 USD'}]
Excel Sheet to JSON: [{"Car Name":"Honda City","Car Price":"20,000 USD"},{"Car Name":"Bugatti Chiron","Car Price":"3 Million USD"},{"Car Name":"Ferrari 458","Car Price":"2,30,000 USD"}]
Excel Sheet to CSV:
Car Name,Car Price
Honda City,"20,000 USD"
Bugatti Chiron,3 Million USD
Ferrari 458,"2,30,000 USD"
Tài liệu tham khảo
Tài liệu API read_excel() của pandas.