Khung dữ liệu python để vượt trội với màu sắc

Thư viện Pandas trong Python chủ yếu được sử dụng để thao tác và phân tích dữ liệu, nhưng bạn có biết rằng Pandas cũng cho phép định dạng có điều kiện của DataFrames không?

Định dạng có điều kiện là một tính năng cho phép bạn áp dụng định dạng cụ thể cho các ô đáp ứng các điều kiện nhất định. Nó phổ biến trong các ứng dụng bảng tính như Microsoft Excel và nó giúp thu hút sự chú ý của người xem vào các điểm và giá trị dữ liệu quan trọng. Nó cũng cho phép bạn phân tích trực quan một tập dữ liệu dựa trên màu sắc, giúp làm việc với các tập dữ liệu lớn dễ dàng hơn

Trong bài viết này, tôi sẽ cung cấp một hướng dẫn đơn giản về cách bạn có thể áp dụng định dạng có điều kiện trên Pandas DataFrames. Các mã được trình bày trong bài viết này có thể được tìm thấy dưới dạng sổ ghi chép tại repo GitHub này

tập dữ liệu

Trong bài viết này, chúng tôi sẽ sử dụng bộ dữ liệu Iris tích hợp từ gói seaborn. Để đơn giản, chúng tôi sẽ lấy mẫu ngẫu nhiên gồm 10 quan sát

Hình ảnh của Tác giảMột mồi trên Pandas DataFrame Styler

Trước khi chúng tôi tìm hiểu sâu hơn, trước tiên cần giới thiệu khái niệm về Pandas DataFrame Styler. Pandas có thuộc tính DataFrame.style, trả về đối tượng Styler. Chính đối tượng Styler này cho phép chúng tôi truy cập và sửa đổi các thuộc tính kiểu dáng khác nhau của Khung dữ liệu Pandas. Gọi .style trên DataFrame của chúng tôi df sẽ hiển thị DataFrame nguyên trạng, nhưng nó được hiển thị dưới dạng một đối tượng pandas.io.formats.style.Style thay vì pandas.core.frame.DataFrame thông thường

Hình ảnh của tác giả

Quan sát rằng việc gọi .style trên df sẽ thay đổi độ chính xác của số float. Nó không thực sự ảnh hưởng đến bất cứ điều gì khi chúng tôi triển khai định dạng có điều kiện, vì vậy chúng tôi sẽ để nguyên như vậy. Tuy nhiên, nếu bạn đặc biệt quan tâm đến điều này, vui lòng sử dụng mã bên dưới để định cấu hình độ chính xác cho phù hợp

Hình ảnh của tác giả

Về cơ bản, đối tượng Styler sử dụng Cascading Style Sheets (CSS) để tùy chỉnh các tham số khác nhau ảnh hưởng đến việc hiển thị DataFrame. Điều này được thực hiện bằng cách chuyển các hàm kiểu vào đối tượng Styler bằng cách sử dụng DataFrame.style2 hoặc DataFrame.style3. Do đó, đầu ra của các hàm kiểu phải là các chuỗi chứa cặp giá trị-thuộc tính CSS, ở định dạng DataFrame.style4. Nếu không có gì được áp dụng, các hàm sẽ trả về một chuỗi rỗng DataFrame.style5hoặc DataFrame.style6

Để biết thêm chi tiết về thuộc tính DataFrame.style và đối tượng Styler, hãy xem các liên kết sau từ tài liệu chính thức của Pandas

  • gấu trúc. Khung dữ liệu. Phong cách
  • gấu trúc. io. định dạng. Phong cách. máy tạo kiểu tóc
Tô sáng ô có điều kiện

Một cách để định dạng có điều kiện Khung dữ liệu Pandas của bạn là đánh dấu các ô đáp ứng các điều kiện nhất định. Để làm như vậy, chúng ta có thể viết một hàm đơn giản và truyền hàm đó vào đối tượng Styler bằng cách sử dụng DataFrame.style2 hoặc DataFrame.style3

  • DataFrame.style3. áp dụng một chức năng cho phần tử DataFrame một cách khôn ngoan;
  • DataFrame.style2. áp dụng một hàm cho DataFrame theo hàng hoặc theo cột

Bây giờ chúng ta hãy khám phá một vài kịch bản

1. Làm nổi bật bất kỳ ô nào đáp ứng một điều kiện

Giả sử chúng ta muốn đánh dấu tất cả các ô có giá trị là 5. 1 trong DataFrame của chúng tôi df với nền màu vàng. Chúng ta có thể viết một hàm đơn giản và sử dụng DataFrame.style3 theo cách sau

Hình ảnh của tác giả

2. Đánh dấu bất kỳ ô nào không đáp ứng điều kiện

Lưu ý từ đoạn mã màu trước đó rằng Styler6 được đặt thành Styler7 nếu điều kiện không được đáp ứng. Thay vì một chuỗi trống, chúng ta chắc chắn có thể đặt màu nếu chúng ta cũng muốn đánh dấu các ô không đáp ứng điều kiện. Ở đây, chúng tôi sẽ giữ các ô có giá trị là 5. 1 màu vàng và tô sáng các ô có giá trị khác 5. 1 màu xanh nhạt. Xin lưu ý rằng khi đặt màu, bạn có thể sử dụng bất kỳ tên màu HTML/CSS hợp lệ nào hoặc mã màu thập lục phân. Với mục đích trình diễn, chúng tôi sẽ sử dụng mã màu thập lục phân

Hình ảnh của tác giả

Chúng ta có thể tiến thêm một bước và khái quát hóa chức năng kiểu. Làm như vậy có nghĩa là chúng ta có thể chuyển vào dưới dạng đối số cho hàm, màu sắc để đánh dấu các ô nếu điều kiện là đúng và nếu điều kiện là sai. Đoạn mã dưới đây sẽ hiển thị cùng một đầu ra như trên

3. Đánh dấu các ô chỉ đáp ứng một điều kiện trong các cột đã chọn

Điều gì xảy ra nếu chúng ta chỉ muốn áp dụng tô sáng có điều kiện trên một số cột nhất định, thay vì toàn bộ Khung dữ liệu?

Trong mã bên dưới, chúng tôi chỉ áp dụng định dạng có điều kiện trên các cột “sepal_length” và "petal_length”

Hình ảnh của tác giả

4. Làm nổi bật các hàng dựa trên các giá trị phân loại

Chúng tôi cũng có thể đánh dấu các hàng của DataFrame dựa trên các giá trị trong cột phân loại. Điều này sẽ cho phép chúng tôi phân đoạn tập dữ liệu một cách trực quan, điều này đặc biệt hữu ích khi làm việc với các tập dữ liệu lớn. Ở đây nếu chúng ta muốn làm nổi bật các hàng tùy thuộc vào loài hoa, chúng ta có thể làm điều này

Hình ảnh của tác giả

Lưu ý rằng có một vài điểm khác biệt chính trong đoạn mã trên

  • Đầu tiên, hàm kiểu, Styler0, hiện lấy trong mỗi hàng làm đối số, trái ngược với hàm Styler1 trước đó lấy giá trị từng ô làm đối số
  • Thứ hai, vì chúng tôi đang áp dụng hàm kiểu theo hàng, nên chúng tôi sử dụng DataFrame.style2 với Styler3 thay vì DataFrame.style3
  • Thứ ba, bởi vì chúng ta đang áp dụng hàm theo hàng, đầu ra của hàm kiểu là một danh sách các chuỗi CSS, thay vì một chuỗi đơn lẻ

5. Đánh dấu các cột dựa trên tên cột

Chúng tôi cũng có thể đánh dấu các ô dựa trên tên cột. Thay vào đó, chúng ta có thể xác định hàm kiểu để lấy từng cột làm đối số, sau đó áp dụng hàm đó theo cột thông minh bằng cách chỉ định Styler5

Giả sử chúng ta muốn đánh dấu cột “loài” bằng một màu khác với các cột khác, chúng ta có thể làm điều này

Hình ảnh của Tác giả Định dạng văn bản có điều kiện

Một cách khác mà chúng tôi có thể muốn định dạng DataFrame của bạn là tùy chỉnh văn bản trong mỗi ô. Các tình huống được đề cập trong phần trước cũng có thể được áp dụng cho định dạng văn bản

Nếu bạn đã nhận ra mẫu, cặp thuộc tính-giá trị CSS để tô sáng ô mà chúng tôi đã định cấu hình sẽ có định dạng sau. Styler6. Chúng tôi có thể áp dụng các loại định dạng có điều kiện khác bằng cách chỉ định các định dạng cặp thuộc tính-giá trị CSS khác nhau. Dưới đây là một số thuộc tính phổ biến mà chúng ta có thể tùy chỉnh trên đối tượng Styler và định dạng chuỗi CSS tương ứng của chúng

  1. Màu phông chữ. Styler8
  2. loại phông chữ. Styler9
  3. Cỡ chữ. .style0
  4. trọng lượng phông chữ. .style1

Chúng ta thậm chí có thể chỉ định nhiều loại thuộc tính trong một hàm kiểu duy nhất bằng cách xâu chuỗi chúng bằng dấu chấm phẩy, như thế này. .style2. Tất nhiên, điều này sẽ chỉ áp dụng cho một điều kiện duy nhất. Nếu chúng tôi muốn chỉ định các loại định dạng khác nhau cho các điều kiện khác nhau, chúng tôi sẽ cần xác định các hàm kiểu riêng biệt

Xuất dưới dạng tệp Excel

Bây giờ, sau khi thực hiện tất cả các định dạng có điều kiện đó trong Pandas, điều tiếp theo chúng ta có thể muốn làm là xuất DataFrame dưới dạng tệp Excel. Tất nhiên, chúng tôi muốn giữ lại tất cả các định dạng trong tệp Excel đã xuất. Chúng ta có thể làm điều này bằng cách sử dụng phương thức .style3, chỉ định một. tên tệp xlsx và công cụ (hoặc là .style4 hoặc là .style5)

Hình ảnh của Tác giảKết hợp tất cả lại với nhau

Rất nhiều đã được bảo hiểm cho đến nay. Hãy đặt những ý tưởng này vào ngữ cảnh thông qua một ví dụ cụ thể. Giả sử chúng tôi muốn định dạng DataFrame df của mình theo các cách sau

  • đánh dấu các hàng dựa trên loài hoa;
  • đặt màu phông chữ thành màu đỏ và độ đậm của phông chữ thành đậm khi chiều dài hoặc chiều rộng của vách ngăn nằm trong khoảng từ 3. 5mm và 5. 5mm;
  • đặt kích thước phông chữ là 15px và loại phông chữ là chữ thảo khi chiều dài cánh hoa hoặc chiều rộng cánh hoa nằm trong khoảng từ 1. 5mm và 3. 5mm

Hãy làm việc qua ví dụ này từng bước

Bước 1. Đánh dấu các hàng dựa trên loài hoa

Chúng tôi đã làm điều này trước đây, với chức năng kiểu Styler0

Hình ảnh của tác giả

Bước 2. Đặt màu và độ đậm của phông chữ khi chiều dài hoặc chiều rộng của vùng kín nằm trong khoảng từ 3. 5mm và 5. 5mm

Vì chúng ta quan tâm đến các giá trị của chiều dài và chiều rộng của vách ngăn, nên chúng ta có thể xác định một hàm kiểu nhận giá trị ô làm đối số, sau đó sử dụng DataFrame.style3 trong khi chỉ định các cột quan tâm bằng đối số Styler8

Ở đây, chúng tôi đang định dạng màu phông chữ và độ đậm của phông chữ, vì vậy chuỗi CSS mà hàm kiểu sẽ trả về cần phải ở định dạng df0. Đây là mã và đầu ra

Hình ảnh của tác giả

Bước 3. Đặt kích thước và loại phông chữ khi chiều dài hoặc chiều rộng của cánh hoa nằm trong khoảng 1. 5mm và 3. 5mm

Tương tự, chúng tôi xác định một hàm kiểu khác để trả về một chuỗi CSS ở định dạng df1. Lưu ý rằng chúng ta có thể áp dụng các định dạng khác nhau cho các điều kiện khác nhau bằng cách đơn giản là xâu chuỗi các phương thức lại với nhau

Hình ảnh của tác giả

Bước 4. Xuất dưới dạng tệp Excel

Được rồi, Khung dữ liệu của chúng tôi bắt đầu trông kỳ lạ, vì vậy chúng tôi sẽ ngừng định dạng nó. Tôi chắc chắn rằng bạn có được sự trôi dạt. Hãy làm một điều cuối cùng - xuất nó dưới dạng tệp Excel

Hình ảnh của tác giả

Dường như có một số vấn đề khi giữ lại định dạng loại phông chữ, nhưng phần còn lại của định dạng có vẻ ổn

Các nguồn lực khác

DataFrame.style sử dụng CSS cơ bản, chúng tôi có thể định dạng có điều kiện DataFrames theo nhiều cách khác. Pandas cũng cung cấp các tính năng thú vị khác. Hãy kiểm tra các tài nguyên sau để tìm hiểu thêm

  • Kiểu dáng văn bản và phông chữ với CSS
  • Trực quan hóa bảng trong Pandas
Sự kết luận

Xin chúc mừng. Bạn đã học những kiến ​​thức cơ bản về định dạng có điều kiện trong Pandas. Tóm tắt nhanh — Bạn đã hiểu vai trò của đối tượng Pandas DataFrame Styler trong việc tùy chỉnh cách hiển thị DataFrame. Bạn đã học cách sử dụng CSS ở định dạng DataFrame.style4 để chỉ định các cài đặt khác nhau, bao gồm màu của ô nổi bật, màu phông chữ, cỡ chữ và loại phông chữ

Bạn cũng đã xem cách xuất đối tượng Styler dưới dạng tệp Excel theo cách giữ nguyên định dạng. Có rất nhiều cách khác để bạn có thể định dạng có điều kiện DataFrames của mình. Không có gì ngăn cản bạn thử nghiệm thêm, tạo định dạng phức tạp hơn và tận hưởng niềm vui trên đường đi

Trước khi bạn đi…

Nếu bài viết này có giá trị và bạn muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký thành viên Medium. Đó là 5 đô la một tháng và các khoản phí hỗ trợ trực tiếp cho tôi và các nhà văn khác có bài báo mà bạn đọc. Là thành viên, bạn có quyền truy cập không giới hạn vào các câu chuyện được xuất bản trên Medium. Nếu bạn đăng ký bằng liên kết này, tôi sẽ kiếm được một khoản hoa hồng nhỏ. Vui lòng tham gia danh sách email của tôi nếu bạn muốn được thông báo bất cứ khi nào tôi xuất bản