Đọc file Excel [phần mở rộng. xlsx,. xls] với Python Pandas. Để đọc tệp excel dưới dạng DataFrame, hãy sử dụng phương pháp pandas
12
2
3
4
5
Bạn có thể đọc trang đầu tiên, trang cụ thể, nhiều trang hoặc tất cả các trang. Pandas chuyển đổi cấu trúc này thành cấu trúc DataFrame, đây là cấu trúc dạng bảng
khóa học liên quan. Phân tích dữ liệu với Python Pandas
Excel
Trong bài viết này, chúng tôi sử dụng một tệp Excel ví dụ. Các chương trình chúng tôi sẽ thực hiện để đọc Excel thành Python
Tạo một file excel gồm 2 sheet sheet1 và sheet2. Bạn có thể sử dụng bất kỳ chương trình hỗ trợ Excel nào như Microsoft Excel hoặc Google Sheets
Nội dung của từng cái như sau
tờ1
tờ2
Cài đặt xlrd
gấu trúc. . read_excel một. ] sử dụng thư viện có tên xlrd trong nội bộ
xlrd là một thư viện để đọc [nhập] tệp Excel [. xlsx,. xls] bằng Python
bài viết liên quan. Cách dùng xlrd, xlwt đọc ghi file Excel bằng Python
Nếu bạn gọi gấu trúc. read_excel s[] trong môi trường chưa cài đặt xlrd, bạn sẽ nhận được thông báo lỗi tương tự như sau
Nhập Lỗi. Cài đặt xlrd >= 0. 9. 0 để được hỗ trợ Excel
xlrd có thể được cài đặt bằng pip. [pip3 tùy thuộc vào môi trường]
1
$ pip install xlrd
đọc excel
Chỉ định đường dẫn hoặc URL của tệp Excel trong đối số đầu tiên.
Nếu có nhiều trang tính, gấu trúc chỉ sử dụng trang tính đầu tiên.
Nó đọc là DataFrame.
1
2
3
4
5
import pandas as pd
df = pd.read_excel['sample.xlsx']
print[df]
Đoạn code trên xuất ra nội dung sheet excel
1
2
3
4
Unnamed: 0 A B C
0 one 11 12 13
1 two 21 22 23
2 three 31 32 33
Nhận trang tính
Bạn có thể chỉ định trang tính để đọc với đối số sheet_name
Chỉ định theo số [bắt đầu từ 0]
1
2
3
df_sheet_index = pd.read_excel['sample.xlsx', sheet_name=1]
print[df_sheet_index]
1
2
3
4
10
Chỉ định theo tên trang tính
1
2
3
$ pip install xlrd1____5
10
Tải nhiều tờ
Cũng có thể chỉ định một danh sách trong đối số sheet_name. Nó là OK ngay cả khi nó là một số 0 bắt đầu hoặc tên trang tính
Số hoặc tên trang tính được chỉ định là khóa chính và gấu trúc dữ liệu. DataFrame được đọc dưới dạng từ điển được đặt hàng OrderedDict với giá trị giá trị
Từ những gì tôi đã thấy cho đến nay, CSV dường như là định dạng phổ biến nhất để lưu trữ dữ liệu giữa các nhà khoa học dữ liệu. Và điều đó có thể hiểu được, nó hoàn thành công việc và là một định dạng khá đơn giản;
Nhưng không phải lúc nào bạn cũng có thể tìm thấy dữ liệu mình cần ở định dạng CSV. Đôi khi định dạng có sẵn duy nhất có thể là tệp Excel. Ví dụ, tập dữ liệu này trên ons. chính phủ. uk về tội phạm ở Anh và xứ Wales, chỉ ở định dạng xlsx;
Đọc tệp Excel
Cách đơn giản nhất để đọc tệp Excel vào khung dữ liệu gấu trúc là sử dụng hàm sau [giả sử bạn đã làm
15]
16
Trong đó
17 có thể là tên của trang tính mà chúng tôi muốn đọc, đó là chỉ mục hoặc danh sách có tất cả các trang tính mà chúng tôi muốn đọc; . tên trang tính hoặc chỉ mục. Nếu chúng tôi muốn tất cả các trang tính, chúng tôi có thể sử dụng
18. Trong trường hợp chúng tôi muốn đọc nhiều trang tính hơn, chúng sẽ được trả về dưới dạng từ điển khung dữ liệu. Các khóa của một từ điển như vậy sẽ là chỉ mục hoặc tên của trang tính, tùy thuộc vào cách chúng tôi chỉ định trong
17;
Bây giờ, nếu chúng tôi sử dụng nó để đọc tệp Excel của mình, chúng tôi sẽ nhận được
Đúng vậy, một lỗi. Hóa ra gấu trúc không thể tự đọc tệp Excel, vì vậy chúng ta cần cài đặt gói python khác để làm điều đó
Có 2 lựa chọn mà chúng ta có.
$ pip install xlrd1 và
$ pip install xlrd2. Gói
$ pip install xlrd1 mở được cả Excel 2003 [. xls] và Excel 2007+ [. xlsx], trong khi
$ pip install xlrd2 chỉ có thể mở Excel 2007+ [. tệp xlsx]. Vì vậy, chúng tôi sẽ cài đặt
$ pip install xlrd1 vì nó có thể mở cả hai định dạng
161
Bây giờ, nếu chúng ta cố gắng đọc lại cùng một dữ liệu
Nó hoạt động
Nhưng các tệp Excel có thể lộn xộn hơn một chút. Ngoài dữ liệu, họ có thể có nhận xét/giải thích khác trong vài hàng đầu tiên và/hoặc cuối cùng
Để yêu cầu gấu trúc bắt đầu đọc một trang tính Excel từ một hàng cụ thể, hãy sử dụng đối số header = 0-indexed row nơi bắt đầu đọc. Theo mặc định, tiêu đề = 0 và hàng đầu tiên như vậy được sử dụng để cung cấp tên của các cột khung dữ liệu
Để bỏ qua các hàng ở cuối trang tính, hãy sử dụng skipfooter = số hàng để bỏ qua
Ví dụ
cái này tốt hơn một chút. Vẫn còn một số vấn đề cụ thể đối với dữ liệu này. Tùy thuộc vào những gì chúng tôi muốn đạt được, chúng tôi cũng có thể cần sắp xếp lại các giá trị dữ liệu theo cách khác. Nhưng trong bài viết này, chúng tôi sẽ chỉ tập trung vào việc đọc và ghi vào và từ các khung dữ liệu
Một cách khác để đọc tệp Excel ngoài cách trên là sử dụng đối tượng
162. Một đối tượng như vậy có thể được xây dựng bằng cách sử dụng hàm tạo
163. Một đối tượng
164 có thể được sử dụng theo một số cách. Thứ nhất, nó có thuộc tính
165 là danh sách tất cả các tên trang tính bên trong tệp Excel đã mở
Sau đó, đối tượng
164 này cũng có một phương thức
167 có thể được sử dụng để phân tích một trang tính từ tệp và trả về một khung dữ liệu. Tham số đầu tiên của phương thức này có thể là chỉ mục của trang tính mà chúng ta muốn phân tích hoặc tên của trang tính đó. Các tham số còn lại giống như trong hàm
168
Một ví dụ về phân tích trang tính thứ hai [chỉ mục 1]
… và ở đây chúng tôi phân tích cú pháp của cùng một trang tính bằng tên của nó thay vì chỉ mục
Các
164 cũng có thể được sử dụng bên trong các câu lệnh
170 và nếu bạn muốn làm điều gì đó phức tạp hơn một chút, chẳng hạn như chỉ phân tích cú pháp các trang tính có 2 từ trong tên của chúng, bạn có thể làm điều gì đó như
Điều tương tự bạn có thể làm bằng cách sử dụng phương pháp
168 thay vì
167, như thế này
… hoặc, nếu bạn chỉ muốn tất cả các trang tính, bạn có thể thực hiện
Viết tệp Excel
Bây giờ chúng ta đã biết cách đọc tệp excel, bước tiếp theo đối với chúng tôi là có thể ghi khung dữ liệu vào tệp excel. Chúng ta có thể làm điều đó bằng cách sử dụng phương pháp khung dữ liệu
173
Trước tiên hãy tạo một khung dữ liệu đơn giản để ghi vào tệp excel
Bây giờ chúng tôi muốn ghi nó vào một tệp excel
… và chúng tôi gặp lỗi
Một lần nữa, gấu trúc không thể tự ghi vào tệp excel; . Các tùy chọn chính mà chúng tôi có là
1
74 — chỉ hoạt động với Excel 2003 [. xls];1
75 — chỉ hoạt động với Excel 2007+ [. xlsx];$ pip install xlrd
2 — chỉ hoạt động với Excel 2007+ [. xlsx];
Nếu chúng ta muốn có thể viết thư cho người cũ. xls, chúng ta nên cài đặt
174 vì đây là phần mềm duy nhất xử lý các tệp đó. Vì. xlsx, chúng tôi sẽ chọn
$ pip install xlrd2 vì nó cũng hỗ trợ chế độ chắp thêm
179
Bây giờ nếu chúng ta chạy lại đoạn mã trên, nó sẽ hoạt động;
Theo mặc định, gấu trúc cũng ghi cột chỉ mục cùng với các cột của chúng tôi. Để loại bỏ nó, hãy sử dụng
180 như trong mã bên dưới
Cột chỉ mục hiện không có ở đó
Nếu chúng ta muốn viết nhiều tờ hơn thì sao?
Câu trả lời là không. Nó sẽ chỉ ghi đè lên tệp chỉ bằng một trang tính. tờ2
Để ghi thêm sheet vào file Excel ta cần sử dụng đối tượng
181 như hình bên dưới. Đầu tiên, chúng tôi tạo một khung dữ liệu khác cho sheet2, sau đó chúng tôi mở tệp Excel dưới dạng đối tượng
182 trong đó chúng tôi ghi 2 khung dữ liệu
Bây giờ tệp Excel của chúng tôi phải có 2 trang tính. Sau đó, nếu chúng ta muốn thêm một trang tính khác vào đó, chúng ta cần mở tệp ở chế độ chắp thêm và chạy mã tương tự như mã trước đó. Ví dụ
File Excel của chúng ta bây giờ có 3 sheet và trông như thế này
Làm việc với các công thức Excel
Có lẽ bạn đang tự hỏi, tại thời điểm này, về các công thức Excel. Còn họ thì sao?
Chà… tin tốt đây. Nó khá dễ dàng. Viết công thức vào tệp Excel đơn giản như chỉ cần viết chuỗi công thức và các chuỗi này sẽ được Excel tự động diễn giải dưới dạng công thức
như một ví dụ
Tệp Excel được tạo bởi đoạn mã trên là
Bây giờ, nếu chúng ta muốn đọc một tệp Excel có các công thức trong đó, gấu trúc sẽ đọc vào các khung dữ liệu kết quả của các công thức đó
Ví dụ: hãy đọc tệp đã tạo trước đó của chúng tôi
Đôi khi, bạn cần lưu tệp Excel theo cách thủ công để tệp này hoạt động và không nhận được số 0 thay vì kết quả của công thức [nhấn CTRL+S trước khi thực hiện mã trên]