首页 > 其他分享 >【pandas小技巧】--DataFrame的显示样式

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

时间:2023-08-25 09:49:08浏览次数:37  
标签:总价 format -- 单价 DataFrame col df pandas

上一篇介绍了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

标签:总价,format,--,单价,DataFrame,col,df,pandas
From: https://www.cnblogs.com/wang_yb/p/17656039.html

相关文章

  • VisionPro 如何通过向导生成项目应用程序
    最终结果Job1:识别二维码Job2:变形匹配......
  • Hue时间参数设置
    Oozie常用的系统常量常量使用公式含义说明${coord:minutes(intn)}返回日期时间:从一开始,周期执行n分钟${coord:hours(intn)}返回日期时间:从一开始,周期执行n*60分钟${coord:days(intn)}返回日期时间:从一开始,周期执行n*24*60分钟${coord:months(intn......
  • E. Kolya and Movie Theatre
    E.KolyaandMovieTheatreRecently,Kolyafoundoutthatanewmovietheatreisgoingtobeopenedinhiscitysoon,whichwillshowanewmovieeverydayfor$n$days.So,onthedaywiththenumber$1\lei\len$,themovietheatrewillshowthepre......
  • 系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
    虚拟内存虚拟内存是一种操作系统提供的机制,用于将每个进程分配的独立的虚拟地址空间映射到实际的物理内存地址空间上。通过使用虚拟内存,操作系统可以有效地解决多个应用程序直接操作物理内存可能引发的冲突问题。在使用虚拟内存的情况下,每个进程都有自己的独立的虚拟地址空间,它......
  • SAP GUI Scripting VBA Code Snippet to Detect all IDs of the UI Elements
    '-Begin-----------------------------------------------------------------OptionExplicitDimgColl()AsStringDimjAsIntegerSubGetAll(ObjAsObject)'---------------------------------------------'-'-Recursivelycalledsubro......
  • VisionPro 控制工业相机实时图像采集
    原谅我,我的相机是国产的,连不上。我就不下什么驱动了。1.参数设置连上相机后,会有相机的序列号(LH54282651)、曝光、增益、对比度、亮度等相机参数设置。2.闪光灯和触发器软触发:软件内部触发(VisionPro)硬触发:外部硬件触发(上位机)3.图像属性4.GigE传输超时、延时等......
  • tomcat9中设置jks证书和pfx证书
    jks证书设置server.xml<Connectorport="443"protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="1000"connectionTimeout="30000"maxPostSize="-1"enabl......
  • ASP.NET Core实时库SignalR简单应用
    一、什么是SignalR:SignalR是用于构建需要实时用户交互或实时数据更新的Web应用程序的一个开放源代码.NET库。不仅仅用在Web应用中,后面会讲到它的应用范围。它简化了简化了构建实时应用程序的过程,包括ASP.NETServer库和JavaScriptClient库,以便管理Client与Server连接并将内容......
  • 公司来了个大佬,把 FullGC 40 次/天优化为 10 天 1 次,太秀了~!
    来源:https://heapdump.cn/article/1859160通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知......
  • 【校招VIP】前端校招考点之页面转换算法
    考点介绍:在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。一、考点题目1......