翼度科技»论坛 编程开发 python 查看内容

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

7

主题

7

帖子

21

积分

新手上路

Rank: 1

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

每个DataFrame都有个style属性,通过这个属性可以来调整显示的样式。
下面的示例,一次调整多个类型的列的显示。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "日期": ["2022-10-01", "2022-11-11",
  5.                "2022-12-12", "2023-01-01", "2023-02-02"],
  6.         "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
  7.         "数量": [1, 3, 1200, 4, 5],
  8.     }
  9. )
  10. df["日期"] = pd.to_datetime(df["日期"])
  11. col_format = {
  12.     "日期": "{:%Y/%m/%d}",
  13.     "单价": "¥{:,.2f}",
  14.     "数量": "{:,} 件"
  15. }
  16. df.style.format(col_format)
复制代码

调整之后:

  • 日期格式改成用/来分割
  • 单价前加了人民币符号,并且用逗号作为千位分隔符
  • 数量用逗号作为千位分隔符,加了单位
调整之后,表格中的内容放入报告中会更加美观。
2. 背景色样式

除了调整数值的显示样式,更强大的功能是,我们可以调整单元格的颜色。
比如,下面的数据,我们先计算出总价,
然后用红色背景标记出总价最小的订单,用绿色背景标记出总价最大的订单。
  1. df = pd.DataFrame(
  2.     {
  3.         "订单号": ["0001", "0002",
  4.                 "0003", "0004", "0005"],
  5.         "单价": [1099.5, 8790.0,
  6.                12.55, 10999.0, 999.5],
  7.         "数量": [1, 3, 1200, 4, 5],
  8.     }
  9. )
  10. df["总价"] = df["单价"] * df["数量"]
  11. col_format = {
  12.     "单价": "¥{:,.2f}",
  13.     "总价": "¥{:,.2f}",
  14. }
  15. df.style.format(col_format).highlight_min(
  16.     "总价", color="red"
  17.     ).highlight_max(
  18.         "总价", color="lightgreen"
  19.     )
复制代码

3. 渐变色样式

添加背景色之后,只能看出哪个订单总价最高,哪个订单总价最低。
对于其他的订单,没有直观的印象,所以,下面我们更进一步用渐变色来标记总价列。
总价越高,背景色越深,这样就对所有订单的总价有了直观的印象。
  1. df = pd.DataFrame(
  2.     {
  3.         "订单号": ["0001", "0002", "0003", "0004", "0005"],
  4.         "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
  5.         "数量": [1, 3, 1200, 4, 5],
  6.     }
  7. )
  8. df["总价"] = df["单价"] * df["数量"]
  9. col_format = {
  10.     "单价": "¥{:,.2f}",
  11.     "总价": "¥{:,.2f}",
  12. }
  13. df.style.format(
  14.     col_format
  15.     ).background_gradient(
  16.         subset="总价", cmap="Greens"
  17.     )
复制代码

4. 条形图样式

再进一步,用条形图+渐变色的方式显示总价信息。
这样,不仅可以看出总价的高低,还能大致看出究竟高了多少。
  1. df = pd.DataFrame(
  2.     {
  3.         "订单号": ["0001", "0002", "0003", "0004", "0005"],
  4.         "单价": [1099.5, 8790.0, 12.55, 10999.0, 999.5],
  5.         "数量": [1, 3, 1200, 4, 5],
  6.     }
  7. )
  8. df["总价"] = df["单价"] * df["数量"]
  9. col_format = {
  10.     "单价": "¥{:,.2f}",
  11.     "总价": "¥{:,.2f}",
  12. }
  13. df.style.format(
  14.     col_format
  15.     ).bar(
  16.         subset="总价", cmap="Wistia"
  17.     )
复制代码

5. 总结回顾

通过pandas本身的样式参数,可以美化分析的结果,直接用于最后的报告或者PPT中。
pandas小技巧系统至此暂时告一段落,接下来,准备开始另一个关键的数据分析库:numpy。

来源:https://www.cnblogs.com/wang_yb/p/17656039.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具