【pandas小技巧】--DataFrame的显示样式

pandas,技巧,dataframe,显示,样式 · 浏览次数 : 205

小编点评

**多列显示格式** ```python df.style.format(col_format) ``` **背景色样式** ```python df.style.highlight_min( "总价", color="red" ).highlight_max( "总价", color="lightgreen" ) ``` **渐变色样式** ```python df.style.background_gradient(subset="总价", cmap="Greens") ``` **条形图样式** ```python df.style.format(col_format).bar(subset="总价", cmap="Wistia" ```

正文

上一篇介绍了DataFrame的显示参数,主要是对DataFrame中值进行调整。

本篇介绍DataFrame的显示样式的调整,显示样式主要是对表格本身的调整,
比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。

下面介绍一些针对单个数据和批量数据的样式调整方式,让DataFrame的数据信息更加的一目了然。

1. 多列显示格式

每个DataFrame都有个style属性,通过这个属性可以来调整显示的样式。
下面的示例,一次调整多个类型的列的显示。

import pandas as pd

df = pd.DataFrame(
    {
        "日期": ["2022-10-01", "2022-11-11", 
               "2022-12-12", "2023-01-01", "2023-02-02"],
        "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
        "数量": [1, 3, 1200, 4, 5],
    }
)

df["日期"] = pd.to_datetime(df["日期"])

col_format = {
    "日期": "{:%Y/%m/%d}", 
    "单价": "¥{:,.2f}", 
    "数量": "{:,} 件"
}
df.style.format(col_format)

image.png
调整之后:

  1. 日期格式改成用/来分割
  2. 单价前加了人民币符号,并且用逗号作为千位分隔符
  3. 数量用逗号作为千位分隔符,加了单位

调整之后,表格中的内容放入报告中会更加美观。

2. 背景色样式

除了调整数值的显示样式,更强大的功能是,我们可以调整单元格的颜色。

比如,下面的数据,我们先计算出总价,
然后用红色背景标记出总价最小的订单,用绿色背景标记出总价最大的订单。

df = pd.DataFrame(
    {
        "订单号": ["0001", "0002", 
                "0003", "0004", "0005"],
        "单价": [1099.5, 8790.0, 
               12.55, 10999.0, 999.5],
        "数量": [1, 3, 1200, 4, 5],
    }
)

df["总价"] = df["单价"] * df["数量"]
col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}

df.style.format(col_format).highlight_min(
    "总价", color="red"
    ).highlight_max(
        "总价", color="lightgreen"
    )

image.png

3. 渐变色样式

添加背景色之后,只能看出哪个订单总价最高,哪个订单总价最低。
对于其他的订单,没有直观的印象,所以,下面我们更进一步用渐变色来标记总价列。

总价越高,背景色越深,这样就对所有订单的总价有了直观的印象。

df = pd.DataFrame(
    {
        "订单号": ["0001", "0002", "0003", "0004", "0005"],
        "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
        "数量": [1, 3, 1200, 4, 5],
    }
)

df["总价"] = df["单价"] * df["数量"]
col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}
df.style.format(
    col_format
    ).background_gradient(
        subset="总价", cmap="Greens"
    )

image.png

4. 条形图样式

再进一步,用条形图+渐变色的方式显示总价信息。
这样,不仅可以看出总价的高低,还能大致看出究竟高了多少。

df = pd.DataFrame(
    {
        "订单号": ["0001", "0002", "0003", "0004", "0005"],
        "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
        "数量": [1, 3, 1200, 4, 5],
    }
)

df["总价"] = df["单价"] * df["数量"]

col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}
df.style.format(
    col_format
    ).bar(
        subset="总价", cmap="Wistia"
    )

image.png

5. 总结回顾

通过pandas本身的样式参数,可以美化分析的结果,直接用于最后的报告或者PPT中。

pandas小技巧系统至此暂时告一段落,接下来,准备开始另一个关键的数据分析库:numpy

与【pandas小技巧】--DataFrame的显示样式相似的内容:

【pandas小技巧】--DataFrame的显示样式

上一篇介绍了`DataFrame`的显示参数,主要是对`DataFrame`中值进行调整。 本篇介绍`DataFrame`的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。 下面介绍一些针对单个数据和批量数据的样式调整方式

【pandas小技巧】--DataFrame的显示参数

我们在`jupyter notebook`中使用`pandas`显示`DataFrame`的数据时,由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。 这时,就需要调整`pandas`显示`DataFrame`的方式。`pandas`为我们提供了很多调整显示方式的参数,具

【pandas小技巧】--花哨的DataFrame

最近github上发现了一个库(`plottable`),可以用简单的方式就设置出花哨的 `DataFrame` 样式。 github上的地址:[https://github.com/znstrider/plottable](https://github.com/znstrider/plottabl

【pandas小技巧】--反转行列顺序

反转`pandas` `DataFrame`的行列顺序是一种非常实用的操作。在实际应用中,当我们需要对数据进行排列或者排序时,通常会使用到Pandas的行列反转功能。这个过程可以帮助我们更好地理解数据集,发现其中的规律和趋势。同时,行列反转还可以帮助我们将数据可视化,使得图表更加易于理解。 除了常规

【pandas小技巧】--随机挑选子集

在 `pandas` 中,如果遇到数据量特别大的情况,随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据,从而更好地进行数据分析和决策。 随机挑选子集的用途主要有: 1. 评估数据质量:随机挑选 DataFrame 的子集可以帮助我们检查数据集的质量,以便进一步探索和挖掘数据。例如,我

【pandas小技巧】--数据转置

所谓**数据转置**,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。 `pandas`中`DataFrame`的转置非常简单,每个`DataFrame`对象都有一个`T`属性,通过这个属性就能得到转置之后的`DataFrame`。下面介

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

【pandas小技巧】--统计值作为新列

这次介绍的小技巧不是统计,而是把统计结果作为**新列**和原来的数据放在一起。`pandas`的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观察。 下面通过两个场景示例来演示如果把统计值作为新列的数据。 # 1. 成绩统计的场景

【pandas小技巧】--category类型补充

`category`类型在**pandas基础**系列中有一篇介绍数据类型的文章中已经介绍过。`category`类型并不是`python`中的类型,是`pandas`特有的类型。 `category`类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成`category`类型,以及

【pandas小技巧】--目录(完结)

`pandas`小技巧系列是介绍的是使用`pandas`分析数据时,最常用的一些操作技巧。 具体包括: 1. [创建测试数据](https://www.cnblogs.com/wang_yb/p/17552748.html) 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常