Hướng dẫn pandas styler to html - pandas Styler sang html

instead of instead of instead of instead of instead of instead of instead of instead of instead of instead of instead of

Phần này thể hiện trực quan hóa dữ liệu bảng bằng cách sử dụng lớp Styler. Để biết thông tin về trực quan hóa với biểu đồ, vui lòng xem trực quan biểu đồ. Tài liệu này được viết dưới dạng máy tính xách tay Jupyter và có thể được xem hoặc tải xuống tại đây.Styler class. For information on visualization with charting please see Chart Visualization. This document is written as a Jupyter Notebook, and can be viewed or downloaded here.

Show

Đối tượng Styler và HTML#

Kiểu dáng nên được thực hiện sau khi dữ liệu trong một khung dữ liệu đã được xử lý. Nhà tạo mẫu tạo ra một HTML

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
6 và tận dụng ngôn ngữ tạo kiểu CSS để thao tác nhiều tham số bao gồm màu sắc, phông chữ, biên giới, nền, v.v. Xem ở đây để biết thêm thông tin về các bảng HTML kiểu dáng. Điều này cho phép rất nhiều sự linh hoạt ra khỏi hộp và thậm chí cho phép các nhà phát triển web tích hợp DataFrames vào các thiết kế giao diện người dùng thoát của họ.Styler creates an HTML
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
6 and leverages CSS styling language to manipulate many parameters including colors, fonts, borders, background, etc. See here for more information on styling HTML tables. This allows a lot of flexibility out of the box, and even enables web developers to integrate DataFrames into their exiting user interface designs.

Thuộc tính

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
7 là một thuộc tính trả về một đối tượng Styler. Nó có một phương thức
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
8 được xác định trên đó để chúng được hiển thị tự động trong sổ ghi chép Jupyter.Styler object. It has a
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
8 method defined on it so they are rendered automatically in Jupyter Notebook.

import pandas as pd
import numpy as np
import matplotlib as mpl

df = pd.DataFrame([[38.0, 2.0, 18.0, 22.0, 21, np.nan],[19, 439, 6, 452, 226,232]],
                  index=pd.Index(['Tumour (Positive)', 'Non-Tumour (Negative)'], name='Actual Label:'),
                  columns=pd.MultiIndex.from_product([['Decision Tree', 'Regression', 'Random'],['Tumour', 'Non-Tumour']], names=['Model:', 'Predicted:']))
df.style

Model:Cây quyết địnhhồi quyNgẫu nhiên
Predicted:Khối uNon-TumourKhối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:      
Khối u (dương tính)38.000000 2.000000 18.000000 22.000000 21 nan
Không phải khối u (tiêu cực)19.000000 439.000000 6.000000 452.000000 226 232.000000

Đầu ra ở trên trông rất giống với biểu diễn HTML DataFrame tiêu chuẩn. Nhưng HTML ở đây đã gắn một số lớp CSS vào mỗi ô, ngay cả khi chúng tôi chưa tạo ra bất kỳ phong cách nào. Chúng ta có thể xem chúng bằng cách gọi phương thức .to_html (), trả về HTML RAW dưới dạng chuỗi, rất hữu ích để xử lý hoặc thêm vào một tệp - đọc thêm về CSS và HTML. Dưới đây chúng tôi sẽ chỉ ra cách chúng tôi có thể sử dụng chúng để định dạng DataFrame để giao tiếp nhiều hơn. Ví dụ: làm thế nào chúng ta có thể xây dựng

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
9:.to_html() method, which returns the raw HTML as string, which is useful for further processing or adding to a file - read on in More about CSS and HTML. Below we will show how we can use these to format the DataFrame to be more communicative. For example how we can build
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
9:

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:  Khối u (dương tính) 
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Đầu ra ở trên trông rất giống với biểu diễn HTML DataFrame tiêu chuẩn. Nhưng HTML ở đây đã gắn một số lớp CSS vào mỗi ô, ngay cả khi chúng tôi chưa tạo ra bất kỳ phong cách nào. Chúng ta có thể xem chúng bằng cách gọi phương thức .to_html (), trả về HTML RAW dưới dạng chuỗi, rất hữu ích để xử lý hoặc thêm vào một tệp - đọc thêm về CSS và HTML. Dưới đây chúng tôi sẽ chỉ ra cách chúng tôi có thể sử dụng chúng để định dạng DataFrame để giao tiếp nhiều hơn. Ví dụ: làm thế nào chúng ta có thể xây dựng s.set_table_styles([ {'selector': 'th.col_heading', 'props': 'text-align: center;'}, {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'}, {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'}, ], overwrite=False) 9:

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

& nbsp;Styler can distinguish the display value from the actual value, in both datavalues and index or columns headers. To control the display value, the text is printed in each cell as string, and we can use the .format() and .format_index() methods to manipulate this according to a format spec string or a callable that takes a single value and returns a string. It is possible to define this for the whole table, or index, or for individual columns, or MultiIndex levels.

Định dạng màn hình#precision argument to specifically help formatting floats, as well as decimal and thousands separators to support other locales, an na_rep argument to display missing data, and an escape argument to help displaying safe-HTML or safe-LaTeX. The default formatter is configured to adopt pandas’

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
0 option, controllable using
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
1

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })

Model:Cây quyết địnhhồi quyNgẫu nhiên
Predicted:Khối uNon-TumourKhối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:      
Khối u (dương tính)38.00 2 18 nan21 Không phải khối u (tiêu cực)
Không phải khối u (tiêu cực)19.00 439 6 Đầu ra ở trên trông rất giống với biểu diễn HTML DataFrame tiêu chuẩn. Nhưng HTML ở đây đã gắn một số lớp CSS vào mỗi ô, ngay cả khi chúng tôi chưa tạo ra bất kỳ phong cách nào. Chúng ta có thể xem chúng bằng cách gọi phương thức .to_html (), trả về HTML RAW dưới dạng chuỗi, rất hữu ích để xử lý hoặc thêm vào một tệp - đọc thêm về CSS và HTML. Dưới đây chúng tôi sẽ chỉ ra cách chúng tôi có thể sử dụng chúng để định dạng DataFrame để giao tiếp nhiều hơn. Ví dụ: làm thế nào chúng ta có thể xây dựng
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
9:
226 232

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df

& nbsp;Định dạng màn hình#
2021-01-013.511696 3.816738
2021-01-022.191467 3.829365
2021-01-031.330027 1.655194
2021-01-044.879420 4.211591
2021-01-050.615864 4.781481
2021-01-064.068379 1.142286
2021-01-074.434695 4.843818
2021-01-084.896107 0.968989
2021-01-094.784108 2.315393
2021-01-102.619898 3.224103

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)

Định dạng giá trị#

 & nbsp;Định dạng màn hình#
Định dạng giá trị#Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.
Ngoài ra, chức năng định dạng có đối số chính xác để giúp định dạng nổi đặc biệt, cũng như các dấu phân cách thập phân và hàng ngàn để hỗ trợ các địa phương khác, đối số NA_REP để hiển thị dữ liệu bị thiếu và đối số thoát để giúp hiển thị HTML an toàn hoặc latex an toàn. Bộ định dạng mặc định được cấu hình để áp dụng tùy chọn Pandas,
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
0, có thể điều khiển bằng cách sử dụng
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
1
$ -22 000 000.0Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.
Ngoài ra, chức năng định dạng có đối số chính xác để giúp định dạng nổi đặc biệt, cũng như các dấu phân cách thập phân và hàng ngàn để hỗ trợ các địa phương khác, đối số NA_REP để hiển thị dữ liệu bị thiếu và đối số thoát để giúp hiển thị HTML an toàn hoặc latex an toàn. Bộ định dạng mặc định được cấu hình để áp dụng tùy chọn Pandas,
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
0, có thể điều khiển bằng cách sử dụng
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
1
Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.$ -22 000 000.0
CÒN THIẾUTrước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.
Ngoài ra, chức năng định dạng có đối số chính xác để giúp định dạng nổi đặc biệt, cũng như các dấu phân cách thập phân và hàng ngàn để hỗ trợ các địa phương khác, đối số NA_REP để hiển thị dữ liệu bị thiếu và đối số thoát để giúp hiển thị HTML an toàn hoặc latex an toàn. Bộ định dạng mặc định được cấu hình để áp dụng tùy chọn Pandas,
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
0, có thể điều khiển bằng cách sử dụng
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
1
Trước khi thêm các kiểu, rất hữu ích khi chỉ ra rằng nhà tạo mẫu có thể phân biệt giá trị hiển thị với giá trị thực, trong cả tiêu đề Datavalues ​​và Index hoặc cột. Để kiểm soát giá trị hiển thị, văn bản được in trong mỗi ô dưới dạng chuỗi và chúng ta có thể sử dụng các phương thức .format () và .format_index () để thao tác điều này theo chuỗi spec định dạng hoặc có thể gọi được có một giá trị duy nhất và trả về một chuỗi. Có thể xác định điều này cho toàn bộ bảng, hoặc chỉ mục hoặc cho các cột riêng lẻ hoặc cấp độ đa dạng.$ -22 000 000.0

CÒN THIẾU

$ -452 000 000.0

Sử dụng styler để thao tác với màn hình là một tính năng hữu ích vì việc duy trì việc lập chỉ mục và datavalues ​​cho các mục đích khác giúp kiểm soát nhiều hơn. Bạn không phải ghi đè lên DataFrame của mình để hiển thị nó theo cách bạn muốn. Dưới đây là một ví dụ về việc sử dụng các hàm định dạng trong khi vẫn dựa vào dữ liệu cơ bản để lập chỉ mục và tính toán..hide() without any arguments, which might be useful if your index is integer based. Similarly column headers can be hidden by calling .hide(axis=“columns”) without any further arguments.

Tokyo.hide() method and passing in a row/column label, a list-like or a slice of row/column labels to for the

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
2 argument.

Hiding không thay đổi sự sắp xếp số nguyên của các lớp CSS, ví dụ: & NBSP; ẩn hai cột đầu tiên của DataFrame có nghĩa là lập chỉ mục lớp cột vẫn sẽ bắt đầu ở

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
3, vì
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
4 và
s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
5 chỉ đơn giản bị bỏ qua.

Chúng tôi có thể cập nhật đối tượng

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
6 của chúng tôi từ trước để ẩn một số dữ liệu và định dạng các giá trị.

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Các phương thức để thêm kiểu#

Có 3 phương pháp chính để thêm các kiểu CSS tùy chỉnh vào Styler:3 primary methods of adding custom CSS styles to Styler:

  • Sử dụng .set_table_styles () để kiểm soát các khu vực rộng hơn của bảng với CSS nội bộ được chỉ định. Mặc dù các kiểu bảng cho phép tính linh hoạt để thêm các bộ chọn và thuộc tính CSS kiểm soát tất cả các phần riêng lẻ của bảng, nhưng chúng rất khó sử dụng cho các thông số kỹ thuật của tế bào riêng lẻ. Ngoài ra, lưu ý rằng các kiểu bảng không thể được xuất sang Excel..set_table_styles() to control broader areas of the table with specified internal CSS. Although table styles allow the flexibility to add CSS selectors and properties controlling all individual parts of the table, they are unwieldy for individual cell specifications. Also, note that table styles cannot be exported to Excel.

  • Sử dụng .set_td_classes () để liên kết trực tiếp các lớp CSS bên ngoài với các ô dữ liệu của bạn hoặc liên kết các lớp CSS bên trong được tạo bởi .set_table_styles (). Xem ở đây. Chúng không thể được sử dụng trên các hàng hoặc chỉ mục tiêu đề cột, và cũng giành được xuất khẩu sang Excel..set_td_classes() to directly link either external CSS classes to your data cells or link the internal CSS classes created by .set_table_styles(). See here. These cannot be used on column header rows or indexes, and also won’t export to Excel.

  • Sử dụng các hàm .Apply () và .ApplyMap () để thêm CSS nội bộ trực tiếp vào các ô dữ liệu cụ thể. Xem ở đây. Kể từ v1.4.0, cũng có các phương thức hoạt động trực tiếp trên các hàng hoặc chỉ mục tiêu đề cột; .apply_index () và .ApplyMap_index (). Lưu ý rằng chỉ các phương pháp này thêm các kiểu sẽ xuất sang Excel. Các phương thức này hoạt động theo cách tương tự như dataFrame.apply () và dataFrame.ApplyMap ()..apply() and .applymap() functions to add direct internal CSS to specific data cells. See here. As of v1.4.0 there are also methods that work directly on column header rows or indexes; .apply_index() and .applymap_index(). Note that only these methods add styles that will export to Excel. These methods work in a similar way to DataFrame.apply() and DataFrame.applymap().

Kiểu bảng#

Kiểu bảng đủ linh hoạt để kiểm soát tất cả các phần riêng lẻ của bảng, bao gồm các tiêu đề và chỉ mục cột. Tuy nhiên, chúng có thể khó sử dụng để gõ cho các ô dữ liệu riêng lẻ hoặc cho bất kỳ loại định dạng có điều kiện nào, vì vậy chúng tôi khuyên bạn nên sử dụng các kiểu bảng được sử dụng để tạo kiểu rộng, chẳng hạn như toàn bộ hàng hoặc cột cùng một lúc.

Các kiểu bảng cũng được sử dụng để kiểm soát các tính năng có thể áp dụng cho toàn bộ bảng cùng một lúc như tạo chức năng di chuột chung. Bộ chọn giả

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
7, cũng như các lựa chọn giả khác, chỉ có thể được sử dụng theo cách này.

Để sao chép định dạng bình thường của các bộ chọn và thuộc tính CSS (cặp giá trị thuộc tính), ví dụ:

tr:hover {
  background-color: #ffff99;
}

Định dạng cần thiết để chuyển các kiểu đến .set_table_styles () là một danh sách các dicts, mỗi loại có thẻ CSS-Selector và CSS-Properies. Các thuộc tính có thể là danh sách 2 bộ phận hoặc chuỗi CSS thông thường, ví dụ:.set_table_styles() is as a list of dicts, each with a CSS-selector tag and CSS-properties. Properties can either be a list of 2-tuples, or a regular CSS-string, for example:

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers])

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Các phương thức để thêm kiểu#not to

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
8 the existing styles.

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:     
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Các phương thức để thêm kiểu#dict to .set_table_styles() which contains row or column keys. Behind the scenes Styler just indexes the keys and adds relevant

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
9 or
out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
0 classes as necessary to the given CSS selectors.

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:     
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Các phương thức để thêm kiểu#

Có 3 phương pháp chính để thêm các kiểu CSS tùy chỉnh vào Styler:

Sử dụng .set_table_styles () để kiểm soát các khu vực rộng hơn của bảng với CSS nội bộ được chỉ định. Mặc dù các kiểu bảng cho phép tính linh hoạt để thêm các bộ chọn và thuộc tính CSS kiểm soát tất cả các phần riêng lẻ của bảng, nhưng chúng rất khó sử dụng cho các thông số kỹ thuật của tế bào riêng lẻ. Ngoài ra, lưu ý rằng các kiểu bảng không thể được xuất sang Excel.

Sử dụng .set_td_classes () để liên kết trực tiếp các lớp CSS bên ngoài với các ô dữ liệu của bạn hoặc liên kết các lớp CSS bên trong được tạo bởi .set_table_styles (). Xem ở đây. Chúng không thể được sử dụng trên các hàng hoặc chỉ mục tiêu đề cột, và cũng giành được xuất khẩu sang Excel..set_table_attributes(). This method can also attach inline styles - read more in CSS Hierarchies.

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
0

Sử dụng các hàm .Apply () và .ApplyMap () để thêm CSS nội bộ trực tiếp vào các ô dữ liệu cụ thể. Xem ở đây. Kể từ v1.4.0, cũng có các phương thức hoạt động trực tiếp trên các hàng hoặc chỉ mục tiêu đề cột; .apply_index () và .ApplyMap_index (). Lưu ý rằng chỉ các phương pháp này thêm các kiểu sẽ xuất sang Excel. Các phương thức này hoạt động theo cách tương tự như dataFrame.apply () và dataFrame.ApplyMap ().

Kiểu bảng#

Kiểu bảng đủ linh hoạt để kiểm soát tất cả các phần riêng lẻ của bảng, bao gồm các tiêu đề và chỉ mục cột. Tuy nhiên, chúng có thể khó sử dụng để gõ cho các ô dữ liệu riêng lẻ hoặc cho bất kỳ loại định dạng có điều kiện nào, vì vậy chúng tôi khuyên bạn nên sử dụng các kiểu bảng được sử dụng để tạo kiểu rộng, chẳng hạn như toàn bộ hàng hoặc cột cùng một lúc..set_td_classes() method accepts a DataFrame with matching indices and columns to the underlying Styler’s DataFrame. That DataFrame will contain strings as css-classes to add to individual data cells: the

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
3 elements of the
s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
6. Rather than use external CSS we will create our classes internally and add them to table style. We will save adding the borders until the section on tooltips.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
1

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Chức năng của styler#

Hành động trên dữ liệu#

Chúng tôi sử dụng các phương pháp sau để vượt qua các chức năng phong cách của bạn. Cả hai phương pháp đó đều có một hàm (và một số đối số từ khóa khác) và áp dụng nó cho DataFrame theo một cách nhất định, hiển thị các kiểu CSS.

  • .ApplyMap () (phần tử theo chiều thành): Chấp nhận một hàm có một giá trị duy nhất và trả về một chuỗi với cặp giá trị thuộc tính CSS. (elementwise): accepts a function that takes a single value and returns a string with the CSS attribute-value pair.

  • .apply () (cột-/hàng-/bảng khôn ngoan): Chấp nhận một hàm có một chuỗi hoặc dataFrame và trả về một chuỗi, dataFrame hoặc mảng numpy với hình dạng giống hệt nhau trong đó mỗi phần tử là một chuỗi có thuộc tính CSS- cặp giá trị. Phương thức này vượt qua từng cột hoặc hàng của DataFrame của bạn một lần hoặc toàn bộ bảng cùng một lúc, tùy thuộc vào đối số từ khóa

    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    5. Để sử dụng cột theo cách
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    6, việc sử dụng Rowwise
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    7 và cho toàn bộ bảng cùng một lúc sử dụng
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    8. (column-/row-/table-wise): accepts a function that takes a Series or DataFrame and returns a Series, DataFrame, or numpy array with an identical shape where each element is a string with a CSS attribute-value pair. This method passes each column or row of your DataFrame one-at-a-time or the entire table at once, depending on the
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    5 keyword argument. For columnwise use
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    6, rowwise use
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    7, and for the entire table at once use
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    8.

Phương pháp này mạnh mẽ để áp dụng nhiều logic phức tạp cho các ô dữ liệu. Chúng tôi tạo một khung dữ liệu mới để chứng minh điều này.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
2

 MộtBCD
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Ví dụ, chúng ta có thể xây dựng một hàm màu sắc văn bản nếu nó âm và chuỗi này với một hàm làm mờ một phần các ô có giá trị không đáng kể. Vì lần này nhìn vào mỗi yếu tố, chúng tôi sử dụng

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
9.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
3

 MộtBCD
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Ví dụ, chúng ta có thể xây dựng một hàm màu sắc văn bản nếu nó âm và chuỗi này với một hàm làm mờ một phần các ô có giá trị không đáng kể. Vì lần này nhìn vào mỗi yếu tố, chúng tôi sử dụng

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
9.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
4

 MộtBCD
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Ví dụ, chúng ta có thể xây dựng một hàm màu sắc văn bản nếu nó âm và chuỗi này với một hàm làm mờ một phần các ô có giá trị không đáng kể. Vì lần này nhìn vào mỗi yếu tố, chúng tôi sử dụng

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
9.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
5

 MộtBCD
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Ví dụ, chúng ta có thể xây dựng một hàm màu sắc văn bản nếu nó âm và chuỗi này với một hàm làm mờ một phần các ô có giá trị không đáng kể. Vì lần này nhìn vào mỗi yếu tố, chúng tôi sử dụng

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
9.

Chúng ta cũng có thể xây dựng một hàm làm nổi bật giá trị tối đa trên các hàng, cols và dataFrame cùng một lúc. Trong trường hợp này, chúng tôi sử dụng

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
00. Dưới đây chúng tôi làm nổi bật mức tối đa trong một cột.

Chúng ta có thể sử dụng cùng một hàm trên các trục khác nhau, làm nổi bật ở đây dữ liệu tối đa trong màu tím và hàng tối đa màu hồng.

Ví dụ cuối cùng này cho thấy một số phong cách đã được ghi đè bởi những người khác. Nói chung, phong cách gần đây nhất được áp dụng là hoạt động nhưng bạn có thể đọc thêm trong phần về phân cấp CSS. Bạn cũng có thể áp dụng các kiểu này vào các phần chi tiết hơn của DataFrame - đọc thêm trong phần về cắt tập con.

Có thể sao chép một số chức năng này chỉ bằng các lớp nhưng nó có thể cồng kềnh hơn. Xem mục 3) tối ưu hóa

  • Mẹo gỡ lỗi: Nếu bạn gặp khó khăn trong việc viết chức năng phong cách của mình, hãy thử chuyển nó vào

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    01. Trong nội bộ,
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    02 sử dụng
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    01 vì vậy kết quả phải giống nhau và với
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    01, bạn sẽ có thể kiểm tra đầu ra chuỗi CSS của chức năng dự định của bạn trong mỗi ô. (elementwise): accepts a function that takes a single value and returns a string with the CSS attribute-value pair.

  • Hành động trên các tiêu đề chỉ mục và cột# (level-wise): accepts a function that takes a Series and returns a Series, or numpy array with an identical shape where each element is a string with a CSS attribute-value pair. This method passes each level of your Index one-at-a-time. To style the index use

    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    6 and to style the column headers use
    out = s.set_table_attributes('class="my-table-cls"').to_html()
    print(out[out.find('):][:109])
    
    7.

Ứng dụng tương tự đạt được cho các tiêu đề bằng cách sử dụng:

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
6

 MộtBCD
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Chú giải công cụ và chú thích#

Chú thích bảng có thể được thêm vào với phương thức .set_caption (). Bạn có thể sử dụng các kiểu bảng để kiểm soát CSS có liên quan đến chú thích..set_caption() method. You can use table styles to control the CSS relevant to the caption.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
7

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Thêm công cụ (vì phiên bản 1.3.0) có thể được thực hiện bằng phương thức .set_tooltips () giống như cách bạn có thể thêm các lớp CSS vào các ô dữ liệu bằng cách cung cấp một khung dữ liệu dựa trên chuỗi với các chỉ số và cột giao nhau. Bạn không phải chỉ định tên

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
10 hoặc bất kỳ CSS
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
11 nào cho các chú giải công cụ, vì có mặc định tiêu chuẩn, nhưng tùy chọn là có nếu bạn muốn kiểm soát trực quan nhiều hơn..set_tooltips() method in the same way you can add CSS classes to data cells by providing a string based DataFrame with intersecting indices and columns. You don’t have to specify a
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
10 name or any css
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
11 for the tooltips, since there are standard defaults, but the option is there if you want more visual control.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
8

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Thêm công cụ (vì phiên bản 1.3.0) có thể được thực hiện bằng phương thức .set_tooltips () giống như cách bạn có thể thêm các lớp CSS vào các ô dữ liệu bằng cách cung cấp một khung dữ liệu dựa trên chuỗi với các chỉ số và cột giao nhau. Bạn không phải chỉ định tên

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
10 hoặc bất kỳ CSS
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
11 nào cho các chú giải công cụ, vì có mặc định tiêu chuẩn, nhưng tùy chọn là có nếu bạn muốn kiểm soát trực quan nhiều hơn.Setting classes always overwrites so we need to make sure we add the previous classes.

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
9

Ma trận nhầm lẫn cho nhiều mô hình dự đoán ung thư.

Model:Cây quyết địnhhồi quy
Predicted:Khối uNon-TumourKhối uNon-Tumour
Nhãn thực tế:    
Khối u (dương tính)38 2 18 22
Không phải khối u (tiêu cực)19 439 6 452

Thêm công cụ (vì phiên bản 1.3.0) có thể được thực hiện bằng phương thức .set_tooltips () giống như cách bạn có thể thêm các lớp CSS vào các ô dữ liệu bằng cách cung cấp một khung dữ liệu dựa trên chuỗi với các chỉ số và cột giao nhau. Bạn không phải chỉ định tên df.style.format(precision=0, na_rep='MISSING', thousands=" ", formatter={('Decision Tree', 'Tumour'): "{:.2f}", ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6) }) 10 hoặc bất kỳ CSS df.style.format(precision=0, na_rep='MISSING', thousands=" ", formatter={('Decision Tree', 'Tumour'): "{:.2f}", ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6) }) 11 nào cho các chú giải công cụ, vì có mặc định tiêu chuẩn, nhưng tùy chọn là có nếu bạn muốn kiểm soát trực quan nhiều hơn.

Điều duy nhất còn lại để làm cho bảng của chúng tôi là thêm các biên giới nổi bật để thu hút sự chú ý của khán giả vào các chú giải công cụ. Chúng tôi sẽ tạo các lớp CSS nội bộ như trước khi sử dụng các kiểu bảng. Cài đặt các lớp luôn luôn ghi đè vì chúng tôi cần đảm bảo rằng chúng tôi thêm các lớp trước.

Kiểm soát tốt hơn với việc cắt#

  • Các ví dụ chúng tôi đã trình bày cho đến nay cho các chức năng

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    02 và
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    13 chưa chứng minh được việc sử dụng đối số
    s.set_table_styles({
        ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                                   {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
    }, overwrite=False, axis=0)
    
    2. Đây là một đối số hữu ích cho phép rất nhiều tính linh hoạt: nó cho phép bạn áp dụng các kiểu cho các hàng hoặc cột cụ thể mà không phải mã hóa logic đó vào hàm
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    15 của bạn.

  • Giá trị được truyền đến

    s.set_table_styles({
        ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                                   {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
    }, overwrite=False, axis=0)
    
    2 hoạt động tương tự như cắt một khung dữ liệu;

  • Một vô hướng được coi là nhãn cột

Một danh sách (hoặc loạt hoặc mảng numpy) được coi là nhiều nhãn cột

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
0

c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Một tuple được coi là

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
17

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
1

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Cân nhắc sử dụng

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
18 để xây dựng tuple cho cái cuối cùng. Chúng tôi sẽ tạo ra một khung dữ liệu đa dạng để chứng minh chức năng.

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
2

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Chúng tôi sẽ sử dụng tập hợp con để làm nổi bật mức tối đa trong cột thứ ba và thứ tư với văn bản màu đỏ. Chúng tôi sẽ làm nổi bật các tập hợp con được cắt lát màu vàng.

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
3

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Cconditional filtering.

D

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
4

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

C

D

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
5

Optimization#

Chú giải công cụ và chú thích#

  • Nếu bạn đang kết xuất và tạo kiểu cho một bảng HTML rất lớn, một số trình duyệt nhất định có vấn đề về hiệu suất.

  • Nếu bạn đang sử dụng

    s.set_table_styles({
        ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                                   {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
    }, overwrite=False, axis=0)
    
    6 để tạo động một phần của giao diện người dùng trực tuyến và muốn cải thiện hiệu suất mạng.

Ở đây chúng tôi đề xuất các bước sau để thực hiện:

1. Xóa UUID và cell_ids#

Bỏ qua

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
26 và đặt
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
27 thành
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
28. Điều này sẽ ngăn chặn HTML không cần thiết.

Đây là tối ưu phụ:

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
6

Thế này tốt hơn:

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
7

2. Sử dụng Kiểu bảng#

Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.

Đây là tối ưu phụ:

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
8

Thế này tốt hơn:

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
9

2. Sử dụng Kiểu bảng#

Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.

Đây là tối ưu phụ:

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
0

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Thế này tốt hơn:

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
1

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 0.978738 2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 -0.854096
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.

Một

B

C

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
2

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
3

D

4. Don Tiết sử dụng Tooltips#

  • Tooltips yêu cầu

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    27 phải hoạt động và chúng tạo thêm các phần tử HTML cho mọi ô dữ liệu.: for use with identifying missing data.

  • 5. Nếu mọi byte đếm sử dụng thay thế chuỗi# and .highlight_max: for use with identifying extremeties in data.

  • Bạn có thể xóa HTML không cần thiết hoặc rút ngắn tên lớp mặc định bằng cách thay thế Dict CSS mặc định. Bạn có thể đọc thêm một chút về CSS dưới đây. and .highlight_quantile: for use with identifying classes within data.

  • Kiểu tích hợp#: a flexible method for highlighting cells based on their, or other, values on a numeric scale.

  • Một số chức năng tạo kiểu là đủ phổ biến để chúng tôi đã xây dựng chúng trong các trò chơi

    s.set_table_styles({
        ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                                   {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
    }, overwrite=False, axis=0)
    
    6, vì vậy bạn không phải viết chúng và tự mình áp dụng chúng. Danh sách hiện tại của các chức năng như vậy là:: similar method for highlighting text based on their, or other, values on a numeric scale.

  • .highlight_null: Để sử dụng với việc xác định dữ liệu bị thiếu.: to display mini-charts within cell backgrounds.

.highlight_min và .highlight_max: để sử dụng với việc xác định cực đoan trong dữ liệu.

.highlight_between và.

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
4

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.

Một

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
5

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.

Một

B

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
6

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.

Một

B

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
7

 Thế này tốt hơn:2. Sử dụng Kiểu bảng#Sử dụng các kiểu bảng nếu có thể (ví dụ: & nbsp; cho tất cả các ô hoặc hàng hoặc cột cùng một lúc) vì CSS gần như luôn luôn hiệu quả hơn các định dạng khác.3. Đặt các lớp thay vì sử dụng các chức năng của styler#
01.764052 0.400157 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 Đối với các khung dữ liệu lớn, nơi cùng một kiểu được áp dụng cho nhiều ô, có thể hiệu quả hơn để khai báo các kiểu là các lớp và sau đó áp dụng các lớp đó vào các ô dữ liệu, thay vì trực tiếp áp dụng các kiểu cho các ô. Tuy nhiên, có lẽ vẫn dễ sử dụng API chức năng Styler hơn khi bạn không quan tâm đến tối ưu hóa.

Một

B

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
8

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
9

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
0

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
1

weather_df.loc["2021-01-04":"2021-01-08"].style.pipe(make_pretty)
9

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
3

C and .text_gradient have a number of keyword arguments to customise the gradients and colors. See the documentation.

D

4. Don Tiết sử dụng Tooltips#

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
4

 MộtBCD
01.764052 0.400157 nan2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 nan

Biểu đồ thanh#

Bạn có thể bao gồm các biểu đồ Bar Bar trong DataFrame của bạn.

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
5

 MộtBCD
01.764052 0.400157 nan2.240893
11.867558 -0.977278 0.950088 -0.151357
2-0.103219 0.410599 0.144044 1.454274
30.761038 0.121675 0.443863 0.333674
41.494079 -0.205158 0.313068 nan
5-2.552990 0.653619 0.864436 -0.742165
62.269755 -1.454366 0.045759 -0.187184
71.532779 1.469359 0.154947 0.378163
8-0.887786 -1.980796 -0.347912 0.156349
91.230291 1.202380 -0.387327 -0.302303

Biểu đồ thanh#

Bạn có thể bao gồm các biểu đồ Bar Bar trong DataFrame của bạn.

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
6

 MộtBCD
01.764 0.400 2.241
11.868 -0.977 0.950 -0.151
2-0.103 0.411 0.144 1.454
30.761 0.122 0.444 0.334
41.494 -0.205 0.313
5-2.553 0.654 0.864 -0.742
62.270 -1.454 0.046 -0.187
71.533 1.469 0.155 0.378
8-0.888 -1.981 -0.348 0.156
91.230 1.202 -0.387 -0.302

nan

Biểu đồ thanh#Bạn có thể bao gồm các biểu đồ Bar Bar trong DataFrame của bạn.Các đối số từ khóa bổ sung cung cấp nhiều quyền kiểm soát hơn về định vị và định vị, và bạn có thể vượt qua danh sách
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
35 để làm nổi bật các giá trị thấp hơn và cao hơn hoặc matplotlib colormap.
Để trình bày một ví dụ ở đây, cách bạn có thể thay đổi ở trên với tùy chọn
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
36 mới, kết hợp với các giới hạn
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
37 và
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
38,
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
39 của hình và các ô dưới của các ô, để lại không gian để hiển thị văn bản và các thanh. Chúng tôi cũng sử dụng
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
32 để tô màu văn bản giống như các thanh bằng cách sử dụng matplotlib colormap (mặc dù trong trường hợp này, hình ảnh có thể tốt hơn nếu không có hiệu ứng bổ sung này).
Ví dụ sau đây nhằm mục đích đưa ra một điểm nổi bật về hành vi của các tùy chọn căn chỉnh mới:
Căn chỉnh
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102
Tất cả tiêu cực
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102
Cả Neg và Pos
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102
Tất cả tích cực
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102
Tích cực lớn
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102
99
-100
-60
-30
-20
-10
-5
0
90
10
20
50
100
100
103
101
102

bên trái

bên phải

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
7

MộtBCD
1.764052 0.400157 nan2.240893
1.867558 -0.977278 0.950088 -0.151357
-0.103219 0.410599 0.144044 1.454274
0.761038 0.121675 0.443863 0.333674
1.494079 -0.205158 0.313068 nan
-2.552990 0.653619 0.864436 -0.742165
2.269755 -1.454366 0.045759 -0.187184
1.532779 1.469359 0.154947 0.378163
-0.887786 -1.980796 -0.347912 0.156349
1.230291 1.202380 -0.387327 -0.302303

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
8

c1c2c3c4
-1.048553 -1.420018 -1.706270 1.950775
-0.509652 -0.438074 -1.252795 0.777490
-1.613898 -0.212740 -0.895467 0.386902
-0.510805 -1.180632 -0.028182 0.428332

Biểu đồ thanh#

Limitations#

  • Bạn có thể bao gồm các biểu đồ Bar Bar trong DataFrame của bạn.

  • Các đối số từ khóa bổ sung cung cấp nhiều quyền kiểm soát hơn về định vị và định vị, và bạn có thể vượt qua danh sách

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    35 để làm nổi bật các giá trị thấp hơn và cao hơn hoặc matplotlib colormap.

  • Để trình bày một ví dụ ở đây, cách bạn có thể thay đổi ở trên với tùy chọn

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    36 mới, kết hợp với các giới hạn
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    37 và
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    38,
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    39 của hình và các ô dưới của các ô, để lại không gian để hiển thị văn bản và các thanh. Chúng tôi cũng sử dụng
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    32 để tô màu văn bản giống như các thanh bằng cách sử dụng matplotlib colormap (mặc dù trong trường hợp này, hình ảnh có thể tốt hơn nếu không có hiệu ứng bổ sung này).

  • Ví dụ sau đây nhằm mục đích đưa ra một điểm nổi bật về hành vi của các tùy chọn căn chỉnh mới:

Căn chỉnh

Tất cả tiêu cực

Widgets#

Cả Neg và Pos

s = df.style.format('{:.0f}').hide([('Random', 'Tumour'), ('Random', 'Non-Tumour')], axis="columns")
s
9

Magnify#

tr:hover {
  background-color: #ffff99;
}
0

tr:hover {
  background-color: #ffff99;
}
1

tr:hover {
  background-color: #ffff99;
}
2

tr:hover {
  background-color: #ffff99;
}
3

Tất cả tích cực

Tích cực lớn

tr:hover {
  background-color: #ffff99;
}
4

tr:hover {
  background-color: #ffff99;
}
5

 012
0bên tráibên phảibên trái

tr:hover {
  background-color: #ffff99;
}
6

bên phải

số không

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    51

  • giữa

  • bần tiện

  • Chia sẻ phong cách#

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    55

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    56

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    57

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    58

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    59

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    60

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    61

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    62

  • Giả sử bạn có một phong cách đáng yêu được xây dựng cho một khung dữ liệu và bây giờ bạn muốn áp dụng cùng một phong cách cho một khung dữ liệu thứ hai. Xuất phong cách với

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    42 và nhập nó trên DataFrame thứ hai với
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    43

  • Chỉ CSS2 có tên màu và màu lục giác có dạng

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    69 hoặc
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    70 hiện được hỗ trợ.

  • Các thuộc tính CSS giả sau đây cũng có sẵn để đặt các thuộc tính kiểu cụ thể Excel:

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      71

Các kiểu cấp độ bảng và các lớp CSS tế bào dữ liệu không được bao gồm trong Export sang Excel: các ô riêng lẻ phải có các thuộc tính của chúng được ánh xạ bởi các phương thức

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
02 và/hoặc
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
13.

tr:hover {
  background-color: #ffff99;
}
7

Một ảnh chụp màn hình của đầu ra:

Hướng dẫn pandas styler to html - pandas Styler sang html

Xuất sang latex#

Có hỗ trợ (vì phiên bản 1.3.0) để xuất

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
6 sang latex. Tài liệu cho phương thức .TO_LATEX cung cấp thêm chi tiết và nhiều ví dụ..to_latex method gives further detail and numerous examples.

Thêm về CSS và HTML#

Ngôn ngữ Cascading Style (CSS), được thiết kế để ảnh hưởng đến cách trình duyệt hiển thị các yếu tố HTML, có đặc điểm riêng của nó. Nó không bao giờ báo cáo các lỗi: nó chỉ âm thầm bỏ qua chúng và không làm cho các đối tượng của bạn như thế nào bạn có ý định để đôi khi có thể bực bội. Dưới đây là một đoạn mồi rất ngắn về cách

s.set_table_styles({
    ('Regression', 'Tumour'): [{'selector': 'th', 'props': 'border-left: 1px solid white'},
                               {'selector': 'td', 'props': 'border-left: 1px solid #000066'}]
}, overwrite=False, axis=0)
6 tạo ra HTML và tương tác với CSS, với lời khuyên về những cạm bẫy phổ biến cần tránh.

Các lớp CSS và IDS#

Cấu trúc chính xác của CSS

out = s.set_table_attributes('class="my-table-cls"').to_html()
print(out[out.find('):][:109])
1 được gắn vào mỗi ô như sau.

  • Các ô có tên chỉ mục và cột bao gồm

    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    77 và
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    78 trong đó
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    79 là cấp độ của nó trong một đa dạng

  • Các ô nhãn chỉ mục bao gồm

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      80

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      78 trong đó
      df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      79 là cấp độ trong đa dạng

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      83 trong đó
      df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      84 là vị trí số của hàng

  • Các ô nhãn cột bao gồm

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      85

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      78 trong đó
      df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      79 là cấp độ trong đa dạng

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      83 trong đó
      df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      84 là vị trí số của hàng

  • Các ô nhãn cột bao gồm

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      90

    • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      88 trong đó
      df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                      formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                                 ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                                })
      
      89 là vị trí số của cột

    • Tế bào dữ liệu bao gồm

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    83, trong đó
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    84 là vị trí số của ô.

  • df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    88, trong đó
    df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                    formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                               ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                              })
    
    89 là vị trí số của ô.

Các ô trống bao gồm

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
95

Các tế bào được cắt tỉa bao gồm

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
96 hoặc
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
97.to_html() method.

tr:hover {
  background-color: #ffff99;
}
8

Cấu trúc của

df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
98 là
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
99 trong đó
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
78 chỉ được sử dụng trên các tiêu đề và các tiêu đề sẽ chỉ có
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
83 hoặc
df.style.format(precision=0, na_rep='MISSING', thousands=" ",
                formatter={('Decision Tree', 'Tumour'): "{:.2f}",
                           ('Regression', 'Non-Tumour'): lambda x: "$ {:,.1f}".format(x*-1e6)
                          })
88 cần thiết. Theo mặc định, chúng tôi cũng đã chuẩn bị từng nhận dạng hàng/cột với một UUID duy nhất cho mỗi khung dữ liệu để kiểu từ một người không va chạm với kiểu dáng khác trong cùng một cuốn sổ tay hoặc trang. Bạn có thể đọc thêm về việc sử dụng UUID trong tối ưu hóa.

Chúng ta có thể thấy ví dụ về HTML bằng cách gọi phương thức .to_html ().

tr:hover {
  background-color: #ffff99;
}
9

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 0

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 1

Phân cấp CSS#

Các ví dụ đã chỉ ra rằng khi các kiểu CSS trùng nhau, hình ảnh xuất hiện cuối cùng trong kết xuất HTML, được ưu tiên. Vì vậy, sản lượng sau đây kết quả khác nhau:

  • Điều này chỉ đúng với các quy tắc CSS tương đương về phân cấp hoặc tầm quan trọng. Bạn có thể đọc thêm về tính đặc hiệu của CSS ở đây nhưng với mục đích của chúng tôi, nó đủ để tóm tắt các điểm chính:

  • Điểm quan trọng của CSS cho mỗi phần tử HTML được lấy bằng cách bắt đầu từ 0 và thêm:

  • 1000 cho thuộc tính kiểu nội tuyến

  • 100 cho mỗi ID

10 Đối với mỗi thuộc tính, lớp hoặc lớp giả

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 2

1 cho mỗi tên phần tử hoặc phần tử giả

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 3

Hãy để sử dụng điều này để mô tả hành động của các cấu hình sau

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 4

Văn bản này có màu đỏ vì bộ chọn được tạo

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
03 có giá trị 101 (phần tử ID cộng), trong khi
weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
04 chỉ có giá trị 100 (ID), do đó được coi là kém hơn mặc dù trong HTML nó xuất hiện sau lần trước.

Trong trường hợp trên, văn bản có màu xanh vì bộ chọn

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
05 có giá trị 110 (lớp ID cộng với), được ưu tiên.

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 5

Bây giờ chúng tôi đã tạo một kiểu bảng khác lần này, bộ chọn

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
06 (lớp ID Plus Plus Plus) bị va chạm lên tới 111.

Extensibility#

Nếu phong cách của bạn không được áp dụng, và nó thực sự bực bội, hãy thử thẻ

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
07 Trump.

  • Cuối cùng cũng có được văn bản màu xanh lá cây đó!

  • Cốt lõi của gấu trúc là, và sẽ vẫn là, các cấu trúc dữ liệu hiệu suất cao, dễ sử dụng của nó. Với ý nghĩ đó, chúng tôi hy vọng rằng

    s.set_table_styles([
        {'selector': 'th.col_heading', 'props': 'text-align: center;'},
        {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
        {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
    ], overwrite=False)
    
    7 hoàn thành hai mục tiêu

Cung cấp một API vui lòng sử dụng tương tác và là đủ tốt cho nhiều nhiệm vụ

Subclassing#

Cung cấp nền tảng cho các thư viện chuyên dụng để xây dựng

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 6

Nếu bạn xây dựng một thư viện tuyệt vời trên hết, hãy cho chúng tôi biết và chúng tôi sẽ liên kết với nó.

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 7

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 8

Nếu mẫu mặc định không phù hợp với nhu cầu của bạn, bạn có thể phân lớp tạo mẫu và mở rộng hoặc ghi đè mẫu. Chúng tôi sẽ hiển thị một ví dụ về việc mở rộng mẫu mặc định để chèn một tiêu đề tùy chỉnh trước mỗi bảng.

cell_hover = {  # for row hover use 
'selector': 'td:hover', 'props': [('background-color', '#ffffb3')] } index_names = { 'selector': '.index_name', 'props': 'font-style: italic; color: darkgrey; font-weight:normal;' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background-color: #000066; color: white;' } s.set_table_styles([cell_hover, index_names, headers]) 9

Chúng tôi sẽ sử dụng mẫu sau:

Bây giờ chúng ta có thể sử dụng nhà tạo mẫu tùy chỉnh đó.Nó

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
10 có một khung dữ liệu.

Bàn của tôi

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Mẫu tùy chỉnh của chúng tôi chấp nhận từ khóa

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
11.Chúng tôi có thể cung cấp giá trị trong phương thức
weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
12.

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
0

Mở rộng ví dụ

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Mẫu tùy chỉnh của chúng tôi chấp nhận từ khóa

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
11.Chúng tôi có thể cung cấp giá trị trong phương thức
weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
12.

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
1

Mở rộng ví dụ

  c1c2c3c4
Mộtr1-1.048553 -1.420018 -1.706270 1.950775
r2-0.509652 -0.438074 -1.252795 0.777490
Br1-1.613898 -0.212740 -0.895467 0.386902
r2-0.510805 -1.180632 -0.028182 0.428332

Mẫu tùy chỉnh của chúng tôi chấp nhận từ khóa
weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
11.Chúng tôi có thể cung cấp giá trị trong phương thức
weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
12.

Mở rộng ví dụ

Để thuận tiện, chúng tôi cung cấp phương thức

weather_df = pd.DataFrame(np.random.rand(10,2)*5,
                          index=pd.date_range(start="2021-01-01", periods=10),
                          columns=["Tokyo", "Beijing"])

def rain_condition(v):
    if v < 1.75:
        return "Dry"
    elif v < 2.75:
        return "Rain"
    return "Heavy Rain"

def make_pretty(styler):
    styler.set_caption("Weather Conditions")
    styler.format(rain_condition)
    styler.format_index(lambda v: v.strftime("%A"))
    styler.background_gradient(axis=None, vmin=1, vmax=5, cmap="YlGnBu")
    return styler

weather_df
13 giống như lớp con tùy chỉnh.

before_style

Một tiêu đề khác

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
2

table_styles

before_cellstyle

Cấu trúc mẫu#

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
3

Ở đây, cấu trúc mẫu cho cả mẫu tạo kiểu và mẫu tạo bảng:

before_table

Mẫu kiểu:

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
4

Phong cách

CellStyle

before_head_rows

Mẫu bảng:

after_head_rows

bàn

before_rows

đầu đề

after_rows

s.set_table_styles([
    {'selector': 'th.col_heading', 'props': 'text-align: center;'},
    {'selector': 'th.col_heading.level0', 'props': 'font-size: 1.5em;'},
    {'selector': 'td', 'props': 'text-align: center; font-weight: bold;'},
], overwrite=False)
5

after_table

THEAD