Chào các coder! Hy vọng mọi người vẫn ổn, nếu không, mong rằng bài giảng này sẽ làm ngày hôm nay của bạn vui hơn một chút.
Hôm nay chúng ta sẽ học cách ghi dữ liệu vào tệp Excel bằng thư viện rất dễ thương và thân thiện là
pandas
. Đúng vậy,
chính cái thư viện bạn đã từng nghe qua. Bài giảng này là một bước quan trọng trên con đường tự động hóa tất cả mọi thứ từ
việc viết báo cáo cho đến quản lý tài chính cá nhân. Nếu bạn từng ước mơ trở thành nhà thánh tự động hóa bảng tính văn phòng (ai mà không muốn chứ?),
thì bạn đã đi đúng hướng rồi đấy.
1. Cơ bản về ghi dữ liệu vào Excel bằng pandas
Giả dụ chúng ta có một DataFrame
đầy ắp số liệu và văn bản hay ho và muốn biến chúng thành
tệp Excel. Làm thế nào để làm điều đó với pandas? Siêu dễ mà! Thư viện pandas
có một method tuyệt vời tên là
to_excel
giúp chúng ta giải quyết mọi vấn đề về lưu dữ liệu.
Cách hoạt động của nó?
Để ghi DataFrame
vào một tệp Excel, chúng ta dùng method to_excel
. Hàm này
cho phép chúng ta chỉ định tên
của file muốn lưu, ví dụ như đặt tên sheet trong Excel mà mình muốn ghi dữ liệu vào.
Hãy xem một ví dụ nhỏ dưới đây:
import pandas as pd
# Tạo một DataFrame nhỏ
data = {
'Trái cây': ['Táo', 'Chuối', 'Anh đào'],
'Số lượng': [10, 5, 2]
}
df = pd.DataFrame(data)
# Ghi DataFrame vào tệp Excel
df.to_excel('fruits.xlsx', sheet_name='Trái cây yêu thích', index=False)
print("Dữ liệu đã được ghi thành công vào tệp 'fruits.xlsx'")
Một chút về các tham số
- Tên tệp: Chúng ta đã chỉ định là 'fruits.xlsx'. Đừng quên thêm đuôi '.xlsx', nếu không bạn sẽ tạo ra một file mà Excel không hiểu được đâu.
- sheet_name: Chúng ta đã chỉ định 'Trái cây yêu thích'. Đây là tên sheet trong bảng Excel, nơi sẽ chứa dữ liệu.
- index: Mặc định pandas sẽ ghi cột chỉ số
DataFrame
vào dưới dạng cột đầu tiên. Nếu không muốn thế, hãy đặtindex=False
như cách chúng ta làm ở đây.
2. Làm việc với nhiều sheet
Sao không thử ghi dữ liệu vào nhiều sheet trong cùng một file Excel nhỉ? Càng nhiều dữ liệu càng vui chứ sao! Dưới đây là một ví dụ cách làm.
Chúng ta sẽ sử dụng pandas.ExcelWriter
, giúp chúng ta linh hoạt hơn trong việc thao tác file.
# Tạo hai DataFrame
data1 = {'Trái cây': ['Táo', 'Cam'], 'Số lượng': [5, 7]}
data2 = {'Rau': ['Cà rốt', 'Bắp cải'], 'Số lượng': [3, 4]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# Tạo một tệp Excel với nhiều sheet
with pd.ExcelWriter('produce.xlsx') as writer:
df1.to_excel(writer, sheet_name='Trái cây', index=False)
df2.to_excel(writer, sheet_name='Rau', index=False)
print("Dữ liệu đã được ghi thành công vào tệp 'produce.xlsx' trên các sheet khác nhau.")
Tại sao cần điều này?
Việc làm việc với nhiều sheet rất hữu ích khi dữ liệu được phân loại logic theo từng danh mục, chẳng hạn như báo cáo cho từng tháng, các loại sản phẩm khác nhau, và vân vân. Excel trở thành một container toàn năng, cho phép lưu trữ tất cả dữ liệu trong một file nhưng tách biệt giữa các sheet.
3. Bài tập thực hành
Bây giờ là lúc để bạn thử thách bản thân. Hãy tạo một tệp Excel mới chứa dữ liệu bán sách tại cửa hàng. Sẽ có hai sheet trong đó: một cho doanh số sách vào tháng 1 và sheet khác là tháng 2. Dưới đây là một chút thông tin để bạn dễ dàng bắt đầu:
- Tháng 1: sách "Python cho mọi người" (doanh số: 50), "Bí mật JavaScript" (doanh số: 30).
- Tháng 2: sách "Python cho mọi người" (doanh số: 70), "Bí mật JavaScript" (doanh số: 40).
Hãy thử tự làm, nếu gặp khó khăn, tham khảo ví dụ dưới đây nhé.
# Ví dụ giải bài tập
# Dữ liệu tháng 1
january_data = {'Sách': ['Python cho mọi người', 'Bí mật JavaScript'], 'Doanh số': [50, 30]}
january_df = pd.DataFrame(january_data)
# Dữ liệu tháng 2
february_data = {'Sách': ['Python cho mọi người', 'Bí mật JavaScript'], 'Doanh số': [70, 40]}
february_df = pd.DataFrame(february_data)
# Tạo tệp Excel với dữ liệu cho hai tháng
with pd.ExcelWriter('book_sales.xlsx') as writer:
january_df.to_excel(writer, sheet_name='Tháng 1', index=False)
february_df.to_excel(writer, sheet_name='Tháng 2', index=False)
print("Dữ liệu đã được ghi thành công vào tệp 'book_sales.xlsx'.")
Hãy kiểm tra tệp book_sales.xlsx
, mở nó và xem lại những gì bạn đã tạo nhé!
4. Thảo luận giải pháp và tối ưu hóa
Như bạn có thể thấy, việc ghi dữ liệu vào Excel với pandas
khá đơn giản. Nhưng vẫn có
một vài điều mà bạn nên lưu ý:
- Tối ưu hóa việc sử dụng bộ nhớ: Nếu bạn có những
DataFrame
siêu to khổng lồ, hãy chia nhỏ dữ liệu ra và ghi từng phần một. - Định dạng: Bạn có thể thêm định dạng, ví dụ như style cho tiêu đề các bảng. Việc này cần
sử dụng thêm thư viện
openpyxl
cùng các method của nó. - Ghi nhiều lần: Nếu bạn dự định ghi dữ liệu thường xuyên vào cùng một file,
hãy xem xét sử dụng
mode='a'
trongExcelWriter
để thêm dữ liệu mới vào file sẵn có.
Một vài ví dụ giải pháp cải thiện cho công việc tương lai
Trong tương lai, khi bạn đã là vua (hoặc nữ hoàng?) của tự động hóa, bạn sẽ cần biết tìm và sửa các vấn đề. Ví dụ, nếu công ty bạn quyết định tổng hợp báo cáo hàng ngày cho cả tháng, bạn có thể sử dụng
pandas
và ExcelWriter
để tự động hóa quy trình này. Có thể bạn sẽ muốn tự động kiểm tra các ngày cuối tuần và ngày lễ để loại trừ không cần báo cáo.
Nên, đừng ngại thử nghiệm và tối ưu hóa công việc của bạn! Python với pandas
là công cụ tuyệt vời để giúp bạn thực hiện điều đó.
GO TO FULL VERSION