DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 理论基础

  • Py数据分析包

    • numpy
    • pandas基本操作
    • pandas数据清洗
    • pandas数据集成
    • pandas高级操作
    • pandas时间序列
    • pandas样式制定
      • 多列显示格式
      • 背景色样式
      • 渐变色样式
      • 条形图样式
    • pandas绘图
    • 商场销售数据分析
    • 美妆数据分析
    • 连锁超市数据分析
    • 财务经营分析
    • 拍拍贷数据分析
    • ★一切从简
    • 一些杂乱的思考
  • 机器学习

  • 深度学习

  • 华中科大的网课

  • AI
  • Py数据分析包
DC
2024-08-16
目录

pandas样式制定

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

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


# 多列显示格式

调整数值的显示样式, 需求:
1> 日期格式改成用 / 来分割.
2> 单价前加了人民币符号, 并且用逗号作为千位分隔符.
3> 数量用逗号作为千位分隔符, 加了单位 件.

image-20240817002245759

示例代码如下: (没有更改源df的数据哦,只是展示的样式变了下. emmm.
调整之后, 表格中的内容放入报告中会更加美观.

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["日期"])
df

col_format = {
    "日期": "{:%Y/%m/%d}",
    "单价": "¥{:,.2f}",
    "数量": "{:,} 件"
}
df.style.format(col_format)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 背景色样式

我们可以调整单元格的颜色.
需求: 我们先计算出总价, 然后用红色背景标记出总价最小的订单, 用绿色背景标记出总价最大的订单.

highlight_min和highlight_max函数的重要参数:
-1- subset : 指定作用范围 (子集).
-2- color : 指定最小值的高亮颜色. 类型为字符串, 默认为黄色.
-3- axis: 轴方向, 即设置最小值的比较范围. 默认值为 0 即按列方向比较, 1 为按行方向比较.

image-20240817003240523

示例代码如下:

import pandas as pd

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["数量"]
df

col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}

df.style.format(col_format).highlight_min(
    "总价", color="lightgreen"
).highlight_max(
    "总价", color="red"
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 渐变色样式

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

image-20240817004041007

示例代码如下:

import pandas as pd

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["数量"]
df

col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}
df.style.format(
    col_format
).background_gradient(
    subset="总价", cmap="Greens", axis=0
)  
# 数值越大颜色越深
# cmap为颜色映射,可选值有Wistia、viridis、plasma、inferno、magma、cool、hot等预定义颜色.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

background_gradient方法的参数为(了解即可):

- cmap: Matplotlib颜色映射(colormap). 类型为字符串或 colormap, 默认值为’PuBu’
- low:  最小颜色范围. 类型为浮点值. 默认为0.
- high: 最大颜色范围. 类型为浮点值. 默认为0.
- axis: 轴方向,即设置值的比较范围. 默认值为0.即按列方向比较,1为按行方向比较.
- subset: 指定作用范围(子集).
- text_color_threshold: 文本的亮度阈值,用于辅助文本在不同背景色下的显示.
                        类型为浮点值或整数,取值范围为0-1,0为全部文本都为暗色,1为全部文本都为亮色.
- vmin: colormap中的最小值. 类型为浮点数,默认值为数据中的最小值.
- vmax: colormap中的最大值. 类型为浮点数,默认值为数据中的最大值.
1
2
3
4
5
6
7
8
9

# 条形图样式

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

image-20240817004454080

示例代码如下:

import pandas as pd

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["数量"]
df

col_format = {
    "单价": "¥{:,.2f}",
    "总价": "¥{:,.2f}",
}
df.style.format(
    col_format
).bar(
    subset="总价", cmap="Wistia"
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

bar方法的参数介绍(了解即可)

- width: 最大值占单元格宽度的百分比. 类型为浮点值, 取值范围为0-100. 默认为100.
- axis:  轴方向.即设置数据条的比较范围. 默认值为0即按列方向比较,1为按行方向比较.
- subset:指定作用范围(子集).
- align: 数据条的对齐方式.取值范围为{'left', 'zero',' mid'}.默认值为'left'.
  - 'left' : 最小值位于单元格的左侧.
  - 'zero' : 0值位于单元格的中央.
  - 'mid' : (max-min)/2值位于单元格的中央. 如果所有值均为正值,0值位于单元格左侧; 如果所有值均为负值,0值位于单元格右侧.
- vmin : 数据条(左侧)最小值. 类型为浮点数,默认值为数据中的最小值.
- vmax : 数据条(右侧)最大值. 类型为浮点数,默认值为数据中的最大值.
- cmap : 颜色映射
1
2
3
4
5
6
7
8
9
10

pandas时间序列
pandas绘图

← pandas时间序列 pandas绘图→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式