DataFrame.style

pandas.io.formats.style.Styler

class pandas.io.formats.style.Styler(data, 
                                     precision=None, 
                                     table_styles=None, 
                                     uuid=None, 
                                     caption=None, 
                                     table_attributes=None, 
                                     cell_ids=True, 
                                     na_rep=None)

参数:

  • dataSeries or DataFrame

    要格式化的数据

  • precisionint

    Precision to round floats to, defaults to pd.options.display.precision.

  • table_styleslist-like, default None

  • caption :str, default None 标题

    Caption to attach to the table.

  • table_attributesstr, default None 表格属性

  • 。。。

Methods

  • apply(func[, axis, subset]) : 按列、按行或按表应用函数。
  • applymap(func[, subset]) :按元素顺序应用函数。
  • background_gradient([cmap, low, high, axis, …]) :用渐变样式给背景上色
  • bar([subset, axis, color, width, align, …]) :在单元格背景中绘制条形图。
  • format(formatter[, subset, na_rep]) : 格式化单元格的文本显示值。
  • hide_columns(subset) :隐藏列从呈现。
  • hide_index(): Hide any indices from rendering.
  • highlight_max([subset, color, axis]) :通过阴影背景来突出最大值。
  • highlight_min([subset, color, axis]):通过阴影背景突出最小值。
  • highlight_null([null_color, subset]):为缺少的值阴影背景空色。
  • set_caption(caption):设置标题
  • set_na_rep(na_rep) :在样式器上设置丢失的数据表示形式。
  • set_precision(precision) :设置精度(精度)
  • set_properties([subset]) :Method to set one or more non-data dependent properties or each cell.
  • set_table_styles(table_styles) : Set the table styles on a Styler.
  • to_excel(excel_writer[, sheet_name, na_rep, …]) :Write Styler to an Excel sheet.
  • use(styles) : Set the styles on the current Styler.
  • where(cond, value[, other, subset]) : Apply a function elementwise.

案例

一:

image-20200818161602234

我们可以创建一个格式化字符串的字典,用于对每一列进行格式化。然后将其传递给DataFrame的 style.format()函数:

image-20200818161655880

注意到,Date列是month-day-year的格式,Close列包含一个$符号,Volume列包含逗号。

我们可以通过链式调用函数来应用更多的格式化:

image-20200818161734222

我们现在隐藏了索引,将Close列中的最小值高亮成红色,将Close列中的最大值高亮成浅绿色。

这里有另一个DataFrame格式化的例子:

image-20200818161804833

Volume列现在有一个渐变的背景色,你可以轻松地识别出大的和小的数值。

最后一个例子:

image-20200818161836038

现在,Volumn列上有一个条形图,DataFrame上有一个标题。

二:

表格样式创建

表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法

样式创建: ① Styler.applymap:elementwise → 按元素方式处理Dataframe ② Styler.apply:column- / row- / table-wise → 按行/列处理Dataframe

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

# 样式

df = pd.DataFrame(np.random.randn(10,4),columns=['a','b','c','d'])
sty = df.style
print(sty,type(sty))
# 查看样式类型

sty
# 显示样式

image-20200818162301170

# 按元素处理样式:style.applymap()

def color_neg_red(val):
    if val < 0:
        color = 'red'
    else:
        color = 'black'
    return('color:%s' % color)
df.style.applymap(color_neg_red)

# 创建样式方法,使得小于0的数变成红色
# style.applymap() → 自动调用其中的函数

image-20200818162328298

# 按行/列处理样式:style.apply()

def highlight_max(s):
    is_max = s == s.max()
    #print(is_max) # 布尔型索引
    lst = []
    for v in is_max:
        if v:
            lst.append('background-color: yellow')
        else:
            lst.append('')
    return(lst)
df.style.apply(highlight_max, axis = 0, subset = ['b','c'])
# 创建样式方法,每列最大值填充黄色
# axis:0为列,1为行,默认为0
# subset:索引
# 样式索引、切片

df.style.apply(highlight_max, axis = 1, 
               subset = pd.IndexSlice[2:5,['b', 'd']])
# 通过pd.IndexSlice[]调用切片
# 也可:df[2:5].style.apply(highlight_max, subset = ['b', 'd']) → 先索引行再做样式

image-20200818162428246

参考

Update time: 2020-08-18

results matching ""

    No results matching ""