Đọc và ghi tệp nói chung là một trong những quy trình cơ bản bạn cần để có thể thực hiện trong mã hóa. Đọc dữ liệu của bạn — giả sử lần này là trong Excel — khá đơn giản, tuy nhiên, một số chi tiết có thể hữu ích trong các trường hợp không lý tưởng
Cho rằng bạn đang đọc dữ liệu để thao tác thêm, chúng tôi sẽ sử dụng Pandas cho nhiệm vụ. Điều này nghe có vẻ giống như một giả định lớn, nhưng số người đọc dữ liệu từ các tệp Excel chỉ để họ không thể làm chính xác gì với nó là tương đối nhỏ. Tôi nắm lấy cơ hội của mình, bạn không phải là một trong số họ
Hãy đi sâu vào vấn đề này. đây là tập tin bạn muốn đọc
Ảnh chụp màn hình của tác giả
Nó không phải là lớn, tôi cung cấp cho bạn điều đó, nhưng dù sao thì nhiều dữ liệu hơn sẽ không phù hợp với ảnh chụp màn hình. Có các phương pháp riêng để đọc trong các phần mở rộng tệp khác nhau, trong trường hợp của chúng tôi, tôi đang sử dụng tệp XLSX, yêu cầu phương pháp gấu trúc read_excel[]
Ảnh chụp màn hình của tác giả
Hoạt động hiệu quả — giờ đây dữ liệu của bạn được tải vào một đối tượng DataFrame. Thông thường, đây là tất cả - bạn đặt tên tệp [và đường dẫn trong đó, trong trường hợp nó không nằm trong cùng thư mục với tập lệnh của bạn], đọc tệp, tắt đi. Phần khó khăn là khi bạn phải sử dụng bất kỳ tham số nào như tôi đã làm với “engine” — bạn có để ý không?
Truyện ngắn. XLRD là công cụ mặc định để Pandas đọc các tệp Excel và khi điều đó xảy ra, XLRD đã ngừng hỗ trợ các tệp XLSX. Nếu bạn vẫn muốn đọc một cái, bạn cần cài đặt openpyxl và đặt nó làm công cụ đọc thay vì mặc định
Hãy xem xét một số tham số khác để xem những gì chúng có thể làm [để biết tài liệu đầy đủ, hãy truy cập tài liệu]
Nếu bạn muốn giữ cho tôi uống cà phê để tạo ra nhiều nội dung như thế này, hãy xem xét để hỗ trợ tôi, chỉ với một ly cà phê
sheet_name
Theo mặc định, gấu trúc sẽ đọc trang đầu tiên trong tệp của bạn nếu có nhiều trang. nếu bạn muốn chọn một cái khác, bạn có thể cung cấp chỉ mục của trang tính [tất nhiên là bắt đầu từ 0] hoặc tên trang tính dưới dạng chuỗi
Ảnh chụp màn hình của tác giả
Ảnh chụp màn hình của tác giả
Lưu ý rằng bạn có thể cung cấp danh sách tên/chỉ mục trang tính để đọc nhiều trang tính, trong trường hợp này, giá trị trả về sẽ là một từ điển và các khóa là tên/chỉ mục trang tính
Ảnh chụp màn hình của tác giả
tiêu đề
Nếu dữ liệu của bạn có hàng tiêu đề ở đâu đó khác với hàng đầu tiên, tất nhiên bạn có thể chỉ định vị trí của nó. Trong trường hợp không có, bạn nên đặt Không và chỉ định [lý tưởng nhất] tên cột trong tham số tiếp theo, tên
Tên
Bạn có thể liệt kê [các] tên của [các] cột tại đây
Ảnh chụp màn hình của tác giả
sử dụng
Mặc dù khá dễ dàng để thu hẹp DataFrame của bạn thành ít cột hơn so với số lượng bạn đã tải ban đầu, nhưng nếu bạn có nhiều cột trong dữ liệu đầu vào của mình và bạn biết trước rằng mình sẽ không sử dụng nhiều cột trong số đó, thì bạn nên sử dụng “usecols . Bạn có nhiều lựa chọn ở đây
- cung cấp các chữ cái cột Excel dưới dạng một chuỗi, được phân tách bằng dấu phẩy [nếu nhiều] hoặc dưới dạng một phạm vi, e. g. “A, B, C”, [“A. C"],
- một danh sách các chỉ mục của các cột, e. g. [1, 2, 4],
- một danh sách tên của các cột, e. g. [“Nhân vật_ID”, “Nhân vật_Tên”, “Nhà”],
- có thể gọi được, lặp qua các tên cột và trả về các tên đánh giá True,
- nếu Không, tất cả các cột sẽ được đưa vào DataFrame
cau mày
Để chỉ bao gồm một số hàng nhất định trong DataFrame của bạn
Ảnh chụp màn hình của tác giả
người bỏ qua
Bạn có thể cung cấp số lượng hàng bạn muốn bị cắt ở cuối tập dữ liệu của mình
Tất nhiên, có khá nhiều tùy chọn khác mà bạn có thể sử dụng, ban đầu tôi nghĩ rằng những tùy chọn này có nhiều khả năng hữu ích nhất trong một vài bài tập đọc tệp đầu tiên của bạn. Vui lòng đọc tài liệu để biết thêm chi tiết và nói chung - bạn có thể học được rất nhiều điều chắc chắn
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 import pandas as pd
]
df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
Trong đó sheet_name
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 sheet_name=None
. 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 sheet_name
;
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ó. xlrd
và openpyxl
. Gói xlrd
mở được cả Excel 2003 [. xls] và Excel 2007+ [. xlsx], trong khi openpyxl
chỉ có thể mở Excel 2007+ [. tệp xlsx]. Vì vậy, chúng tôi sẽ cài đặt xlrd
vì nó có thể mở cả hai định dạng
df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
1
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 df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
2. 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 df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
3. Một đối tượng df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
4 có thể được sử dụng theo một số cách. Thứ nhất, nó có thuộc tính df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
5 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 df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
4 này cũng có một phương thức df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
7 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 df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
8
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 df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
4 cũng có thể được sử dụng bên trong các câu lệnh sheet_name
0 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 thức df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
8 thay vì phương pháp df = pd.read_excel[‘path_to_excel_file’, sheet_name=’…’]
7, 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 sheet_name
3
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à
sheet_name
4 — chỉ hoạt động với Excel 2003 [. xls];sheet_name
5 — chỉ hoạt động với Excel 2007+ [. xlsx];openpyxl
— 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 sheet_name
4 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 openpyxl
vì nó cũng hỗ trợ chế độ chắp thêm
sheet_name
9
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 sheet_name=None
0 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 sheet_name=None
1 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 sheet_name=None
2 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]