Màu nền python pandas excel

Thư viện Pandas của Python cho phép bạn trình bày dữ liệu dạng bảng theo cách tương tự như Excel. Điều không giống nhau là chức năng tạo kiểu. Trong Excel, bạn có thể tận dụng tô màu bằng một cú nhấp chuột hoặc định dạng có điều kiện để làm nổi bật các bảng của mình. Trong Pandas, nó phức tạp hơn một chút

Tin vui là - Style API trong Pandas sẵn sàng trợ giúp. Tôi hoàn toàn không biết về nó cho đến gần đây, và đó là một trong những điều mà tôi ước mình phát hiện ra sớm hơn. Tôi đã dành quá nhiều giờ để tổng hợp dữ liệu bằng Python và Pandas, sau đó sao chép kết quả sang Excel để tạo kiểu

Âm thanh quen thuộc?

Bộ dữ liệu

Trước khi đi sâu vào nội dung hay, chúng ta phải chăm sóc bộ dữ liệu. Đoạn mã bạn sẽ thấy bên dưới tạo một mã cho bạn. Nó có bốn cột, mỗi cột có 5 giá trị tùy ý. Một số giá trị cũng bị thiếu vì những lý do mà bạn sẽ sớm thấy

import numpy as np
import pandas as pd

df = pd.DataFrame[{
    "A": [0, -5, 12, -4, 3],
    "B": [12.24, 3.14, 2.71, -3.14, np.nan],
    "C": [0.5, 1.2, 0.3, 1.9, 2.2],
    "D": [2000, np.nan, 1000, 7000, 5000]
}]
df

Đây là tập dữ liệu trông như thế nào

Hình 1 - Tập dữ liệu tự tạo [ảnh của tác giả]

Đó là một đầu ra Pandas khá tiêu chuẩn, trông quen thuộc và, hãy đối mặt với nó, thật nhàm chán. Tiếp theo, bạn sẽ học cách thêm gia vị cho nó

Định dạng cơ bản với Pandas Styles

Pandas đóng gói API kiểu cho phép bạn thay đổi cách hiển thị DataFrame. Có nhiều chức năng tạo kiểu tích hợp, nhưng cũng có tùy chọn để viết của riêng bạn

Một điều tôi thấy khó chịu nhất là cột chỉ mục. Nó chỉ là một chuỗi và không cung cấp giá trị trong thế giới thực để trực quan hóa bảng. Sử dụng phương pháp

df.style.format[precision=2]
1 để loại bỏ nó

df.style.hide[axis="index"]
Hình ảnh 2 - Ẩn chỉ mục khung dữ liệu [hình ảnh của tác giả]

Tốt hơn nhiều

Có những thứ khác khiến DataFrame của chúng ta khó nhìn vào. Ví dụ: độ chính xác của các số thập phân này là không cần thiết. Đối với mục đích trực quan hóa, hầu hết thời gian là đủ hai chữ số thập phân

df.style.format[precision=2]
Hình ảnh 3 - Chỉ định độ chính xác của giá trị [hình ảnh của tác giả]

Bạn có thể tiến thêm một bước trong toàn bộ câu chuyện và chỉ định một chuỗi định dạng tùy chỉnh. Cái bên dưới sẽ thêm dấu trừ trước và sau mỗi giá trị, đồng thời định dạng mỗi số thành ba chữ số thập phân

df.style.format["- {:.3f} -"]
Hình ảnh 4 - Kiểu định dạng giá trị tùy chỉnh [hình ảnh của tác giả]

Mọi thứ không kết thúc ở đây. Đôi khi, bạn muốn định dạng khác nhau cho mỗi cột. Chỉ định chuỗi định dạng dưới dạng cặp khóa-giá trị và bạn sẽ ổn.  

df.style.format[{
    "A": "{:.2f}",
    "B": "{:,.5f}",
    "C": "{:.1f}",
    "D": "$ {:,.2f}"
}]
Hình 5 - Chỉ định kiểu định dạng cho từng cột [hình của tác giả]

Điều đó làm điều đó cho những điều cơ bản về định dạng. Tiếp theo, chúng ta sẽ tìm hiểu nhiều cách để thay đổi văn bản và màu nền - và hơn thế nữa

Sử dụng Pandas Styler để thay đổi văn bản và màu nền

Thông thường, bạn nên đánh dấu các điểm dữ liệu mà bạn muốn thu hút sự chú ý. Hàm

df.style.format[precision=2]
2 tiện lợi gán màu vàng cho giá trị lớn nhất của mọi ô trong DataFrame

df.style.highlight_max[]
Hình ảnh 6 - Làm nổi bật các giá trị tối đa [hình ảnh của tác giả]

Hàm

df.style.format[precision=2]
3 thì ngược lại

df.style.highlight_min[]
Hình 7 - Làm nổi bật các giá trị tối thiểu [hình ảnh của tác giả]

Ngoài các điểm dữ liệu tối thiểu và tối đa, bạn cũng có thể đánh dấu các giá trị còn thiếu. Ví dụ dưới đây cho bạn thấy cách tô màu các ô không có giá trị bằng màu đỏ

df.style.format[precision=2]
0
Hình 8 - Làm nổi bật các giá trị null [hình của tác giả]

Nếu bạn không hài lòng với nan mặc định được in, bạn cũng có thể định dạng các giá trị bị thiếu bằng một chuỗi tùy chỉnh

df.style.format[precision=2]
1
Hình ảnh 9 - Làm nổi bật các giá trị null [2] [hình ảnh của tác giả] 

Gọn gàng. Hãy khám phá một số tùy chọn tô màu khác

Ví dụ: hàm

df.style.format[precision=2]
4 sẽ tô màu các ô của các hàng riêng lẻ bằng bảng màu chuyển sắc. Một bảng màu hơi xanh được sử dụng theo mặc định và các ô có giá trị cao hơn được lấp đầy bằng các màu tối hơn

df.style.format[precision=2]
3
Hình 10 - Sử dụng bảng chuyển màu để làm nổi bật [ảnh của tác giả]

Bạn không cần phải tô màu toàn bộ tập dữ liệu - tham số

df.style.format[precision=2]
5 cho phép bạn chỉ định danh sách các cột mà bạn muốn tô màu

df.style.hide[axis="index"]
0
Hình 11 - Sử dụng bảng chuyển màu để làm nổi bật [2] [ảnh của tác giả]

Ngoài ra còn có một cách để thay đổi bảng màu và đặt rõ ràng các giá trị tối thiểu và tối đa. Các tham số này có sẵn trong cả hàm

df.style.format[precision=2]
4 và
df.style.format[precision=2]
7. Hãy xem cái sau hoạt động như thế nào trước

df.style.hide[axis="index"]
1
Hình 12 - Sử dụng bảng chuyển màu tùy chỉnh để thay đổi màu văn bản [hình ảnh của tác giả]

Đẹp, nhưng không quá dễ nhìn. Giá trị thứ hai hơi khó đọc. Đó là lý do tại sao tốt hơn là tô màu toàn bộ ô chứ không chỉ văn bản

df.style.hide[axis="index"]
2
Hình 13 - Sử dụng bảng chuyển màu tùy chỉnh để thay đổi màu nền [ảnh của tác giả]

Bây giờ chúng ta hãy đi vào những thứ thực sự thú vị. Chúng ta sẽ khám phá màu của từng ô dưới dạng biểu đồ thanh. "Độ dài" của một thanh được biểu thị bằng giá trị của ô - giá trị càng cao so với phần còn lại của cột thì càng nhiều ô được tô màu

Để thêm màu thanh vào DataFrames của bạn, chỉ cần gọi hàm

df.style.format[precision=2]
8

df.style.hide[axis="index"]
3
Hình ảnh 14 - Phạm vi giá trị dưới dạng biểu đồ thanh [hình ảnh của tác giả]

Nó không phải là bảng đẹp nhất theo mặc định. Có một số cột có giá trị âm, vì vậy thanh đi theo cả hai chiều mà không có sự phân biệt trực quan. Đó là một thực hành thiết kế tồi, ít nhất phải nói rằng

Ngoài ra, sẽ hữu ích nếu có đường viền giữa các ô. Mặt khác, màu tô chỉ tan chảy với những màu xung quanh

df.style.hide[axis="index"]
4
Hình ảnh 15 - Phạm vi giá trị dưới dạng biểu đồ thanh [2] [hình ảnh của tác giả]

Tốt hơn nhiều

Nếu có một điểm khiến nhiều người dùng Pandas lo ngại, thì đó là kích thước văn bản. Nó quá nhỏ nếu bạn đang làm việc trên một màn hình lớn và không muốn làm mọi thứ lớn hơn

Bạn có thể sử dụng hàm

df.style.format[precision=2]
9 để chuyển vào từ điển các cặp khóa-giá trị. Cả khóa và giá trị đều đến từ CSS và bạn sẽ cảm thấy như ở nhà nếu có bất kỳ kinh nghiệm nào về thiết kế web

Đoạn mã bên dưới đặt đường viền màu xám dày hơn, áp dụng màu xanh lục cho văn bản và tăng kích thước văn bản tổng thể

df.style.hide[axis="index"]
5
Hình 16 - Thay đổi màu chữ và kích thước [ảnh của tác giả]

Đó là đủ cho các kiểu dáng cơ bản. Tiếp theo, chúng ta sẽ thực sự làm cho bảng nổi bật với một vài ví dụ nâng cao

Nâng cao. Kiểu Tiêu đề Hàng và Cột Chỉ mục

Thiết kế bảng, hay thiết kế nói chung, mang tính chủ quan cao. Nhưng có một điểm chung của tất cả các bảng đẹp mắt - một hàng tiêu đề dễ phân biệt. Trong phần này, bạn sẽ học cách tạo kiểu

  • Hàng tiêu đề bảng
  • Cột chỉ mục của bảng
  • Các ô của bảng ở trạng thái di chuột

Hãy bắt đầu nào. Chúng tôi sẽ khai báo ba từ điển - từ điển đầu tiên dành cho trạng thái di chuột, từ điển thứ hai dành cho cột chỉ mục và từ điển cuối cùng dành cho hàng tiêu đề. Bạn có thể áp dụng tất cả chúng cho DataFrame bằng chức năng

df.style.format["- {:.3f} -"]
0

df.style.hide[axis="index"]
6
Hình 17 - Bảng có các hàng chỉ mục và tiêu đề được tạo kiểu [hình ảnh của tác giả]

Đó là sự khác biệt giữa ngày và đêm so với những gì chúng tôi có trước đây, nhưng chúng tôi có thể làm cho nó tốt hơn nữa. Ví dụ: chúng ta có thể làm cho tất cả các cột có cùng chiều rộng, căn giữa nội dung ô và thêm đường viền màu đen 1 pixel giữa chúng

df.style.hide[axis="index"]
7
Hình ảnh 18 - Bảng có các hàng chỉ mục và tiêu đề được tạo kiểu [2] [hình ảnh của tác giả]

Bây giờ đó là một cái bàn đẹp

Tiếp theo, hãy xem cách khai báo kiểu có điều kiện dựa trên đầu ra của các hàm Python

Nâng cao. Khai báo kiểu tùy chỉnh với Pandas Styler

Đôi khi các kiểu tích hợp sẽ không cắt được. May mắn thay, bạn có thể áp dụng của riêng mình nhờ các hàm Python

Đây là một ví dụ. Hàm

df.style.format["- {:.3f} -"]
1 sẽ

  • Tô màu ô màu đỏ nếu giá trị nhỏ hơn hoặc bằng giá trị trung bình
  • Tô màu xanh cho ô nếu giá trị lớn hơn giá trị trung bình
  • Làm cho văn bản trắng và đậm trong các trường hợp

Khi đã ở bên ngoài hàm Python, chỉ cần gọi hàm

df.style.format["- {:.3f} -"]
2 từ API Pandas Styles

df.style.hide[axis="index"]
8
Hình 19 - Sử dụng chức năng đánh dấu trung bình [ảnh của tác giả]

Không phải là màu đẹp nhất, nhưng chắc chắn là một cách dễ dàng để thiết lập định dạng có điều kiện trong Python

Một trường hợp sử dụng phổ biến là làm cho màu văn bản của ô có màu đỏ nếu giá trị là âm. Đây là cách bạn sẽ thực hiện điều đó

df.style.hide[axis="index"]
9
Hình 20 - Sử dụng chức năng tô đậm âm bản [ảnh của tác giả]

Và với kiến ​​thức đó trong vành đai của chúng tôi, chỉ còn một điều cần thảo luận - xuất các bảng theo kiểu của bạn

Cách xuất Khung dữ liệu Pandas được tạo kiểu sang Excel

Kết quả của tất cả các chức năng API kiểu Pandas là một Khung dữ liệu Pandas. Như vậy, bạn có thể gọi hàm

df.style.format["- {:.3f} -"]
3 để lưu DataFrame cục bộ. Nếu bạn xâu chuỗi chức năng này với một loạt các chỉnh sửa kiểu, thì tệp Excel kết quả cũng sẽ chứa các kiểu đó

Đây là mã để xuất bảng màu dựa trên độ dốc

df.style.format[precision=2]
0
Hình 21 - Tệp Excel đã xuất [ảnh của tác giả]

Đó cũng là điều bạn có thể thực hiện trong Excel, nhưng thực hiện trong Pandas đơn giản hơn nhiều

Tóm tắt về Pandas Style API

Hôm nay bạn đã tìm hiểu thông tin chi tiết về Pandas Style API. Như tôi đã đề cập trước đó, đó là API mà tôi ước mình học sớm hơn vì nó sẽ giúp tôi tiết kiệm rất nhiều thời gian khi làm bài thuyết trình và giấy tờ

Không có gì bạn không thể tạo kiểu tóc khôn ngoan với các công cụ và kỹ thuật bạn đã học ngày hôm nay. Các chức năng có thể được xâu chuỗi lại với nhau khi bạn muốn áp dụng nhiều kiểu - ví dụ: thay đổi số vị trí thập phân và tô màu ô. Đặt hàng quan trọng, vì vậy hãy ghi nhớ điều đó

Chủ Đề