在juoyter notebook中直接通过df输出DataFrame时,显示的样式为表格样式,通过sytle可对表格的样式做一些定制,类似excel的条件格式。

df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
s = df.style
print(s,type(s))
#<pandas.io.formats.style.Styler object at 0x000001CD7B409710> <class 'pandas.io.formats.style.Styler'>

对表格创建样式有两种方式,都需要额外定义一个处理样式的函数

①df.style.applymap(func,*args,**kwargs):对DataFrame中的每一个元素都按照func的逻辑处理

# 将小于0.2的值字体设置为红色,否则设置为黑色
df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
def lt_red(val):
if val<0.2:
color = 'red'
else:
color = 'black'
# print(color)
return ('color:%s'%color)
df.style.applymap(lt_red)

②df.style.apply(func,axis=0,subset=**,*args,**kwargs):对DataFrame的行或列按照func的逻辑处理,axis默认为0按照列处理,1按照行处理。

# 将A、C、D列中的每一列最大值背景颜色填充为黄色
def highlight_max(s):
is_max = s == s.max()
l = []
for v in is_max:
if v:
l.append('background-color:yellow')
else:
l.append('')
# print(l)
return l
df.style.apply(highlight_max,axis = 1,subset = ['A','C','D'])

       

如果在style中需要同时进行行和列的切片,需要用到pandas的IndexSlice

# 对索引为2-5行,列为A、C、D中的每一列最大值背景颜色填充为黄色
df.style.apply(highlight_max,axis=1,subset = pd.IndexSlice[2:5,['A','B','C']])
## df.loc[2:5,['A','C']].style.apply(highlight_max,axis=1)也可以实现
## 上一种方法会显示所有的DataFrame内容,然后对满足条件的行和列做格式处理;而后一种方法是只显示满足条件的行和列,再做格式处理

    

格式化DataFrame中的数值

df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
# df.style.format('{:.2%}',subset=['B','C']) #对所有符合条件的采用一种格式format,整个格式用''括起来
df.style.format({'A':'{:.2f}','B':'{:%}','C':'{:+}','D':'{:.2%}'}) #对不同的列采用不同的format,参数为一个字典,key为列名,value为格式
# A、B、C、D列的格式分别为2位小数、百分数、前面加+号,2位小数的百分数

定位空值df.style.highlight_null(null_color='red'),对空值设置背景颜色

对应还有highlight_max()和highlight_min(),参数(subset=None, color='yellow', axis=0)

df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
df['B'][2] = np.nan
df.style.highlight_null(null_color='red')

色彩映射

df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
df.style.background_gradient(cmap='Reds',axis = 1,low = 0,high = 1,subset = ['A','C','D'])
# 按行处理,最小值对应颜色表中的最浅色,最大值对应颜色表中的最深色,1表示按行处理

条形图

df = pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])
df.style.bar(width=100,subset=['A','C','D'],color='lightpink')

分段式构建样式

df.style.\
bar(width=100,subset=['A'],color='lightpink').\
highlight_max(axis = 1,color='red').\
highlight_min(axis = 1,color='green')
#除最后一行,每一行都以.\结尾

pandas之表格样式的更多相关文章

  1. 07. Matplotlib 3 |表格样式| 显示控制

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

  2. delphi 设置表格样式。

    //设置表格样式 wordDoc.Tables.Item(1).Borders.Item(Word.WdBorderType.wdBorderLeft).LineStyle = Word.WdLine ...

  3. CSS:表格样式(设置表格边框/文字/背景的样式)

    使用CSS能够制作出十分精美的表格. 代码整理自w3school:http://www.w3school.com.cn 效果图: 代码: <!DOCTYPE html PUBLIC " ...

  4. 普通table表格样式及代码大全(全)

    普通table表格样式及代码大全(全)(一) 单实线边框表格 <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#00 ...

  5. 美丽的表格样式(使用CSS样式表控制表格样式)

    按照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要全然放弃使用表格,表格在数据展现方面还是不错的选择. 如今使用介绍使用CSS样式表来控制.美化表格的 ...

  6. 漂亮的表格样式(使用CSS样式表控制表格样式)

    根据WEB2.0风格,设计了几个表格样式,我希望你喜欢. WEB2.0推广使用div开放式布局.但并不是完全放弃使用形式,在数据表现形式而言是一个不错的选择. 本节将介绍如何使用现在CSS样式表来控制 ...

  7. Bootstrap表格样式(附源码文件)--Bootstrap

    1.表格默认样式 <h4>表格默认样式</h4><table><!--默认样式--> <tr><th>序号</th> ...

  8. word建立统一的表格样式

    插入一个表格,一般border都是一样粗细,不美观, 这里推荐一种样式如下图(外框和首行都加粗,比较好看) 设置方法: 1.选中表格,上方出现设计选项卡 2.表格样式,点击"新建样式表&qu ...

  9. Bootstrap -- 表格样式、表单布局

    Bootstrap -- 表格样式.表单布局 1. 表格的一些样式 举例: <!DOCTYPE html> <html> <head> <meta http- ...

随机推荐

  1. 4W字的后端面试知识点总结(持续更新)

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  2. Python3笔记002 - 1.2 搭建python开发环境

    第1章 认识python 1.2 搭建python开发环境 1.2.1 python开发环境概述 python开发环境常见的操作系统: Windows Mac OS Linux 1.2.2 安装pyt ...

  3. Java源码详解系列(十)--全面分析mybatis的使用、源码和代码生成器(总计5篇博客)

    简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...

  4. Html5中input新增的表单元素和属性介绍。

    input标签主要用于Web表单的创建交互,以便接受来自用户的数据. 我们通过更改type属性的值,来实现不同的输入类型.在以前的写法中表单元素必须放在form元素所包含的里面,而在html5中,我们 ...

  5. 多线程01-CAS (CompareAndSwap)

    1.基本概念 原子性是不可中断的最小操作:在Java中,一般通过加锁或者自旋CAS方式来确保原子操作: 而CAS(compareAnd swap)作为Java中常用的保证原子性的手段,JDK1.5之后 ...

  6. JZOJ2018提高组-测绘

    测绘 题目大意 为了研究农场的气候, \(Betsy\) 帮助农夫 \(John\) 做了 \(N(1 <= N <= 100)\) 次气压测量并按顺序记录了结果 \(M_1...M_N( ...

  7. HDU 4352 XHXJ's LIS HDU(数位DP)

    HDU 4352 XHXJ's LIS HDU 题目大意 给你L到R区间,和一个数字K,然后让你求L到R区间之内满足最长上升子序列长度为K的数字有多少个 solution 简洁明了的题意总是让人无从下 ...

  8. 【状压DP】SCOI2005-洛谷P1896-互不侵犯 (状压例题)

    [状压DP]SCOI2005-洛谷P1896-互不侵犯 (状压例题) 标签(空格分隔): 状压DP 好久没写博客了,真的爽(误) 题目: 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方 ...

  9. 如果你想写自己的Benchmark框架

    目录 简介 八条军规 第一条军规 第二条军规 第三条军规 第四条军规 第五条军规 第六条军规 第七条军规 最后一条军规 总结 简介 使用过JMH的同学一定会惊叹它的神奇.JMH作为一个优秀的Bench ...

  10. selenium.common.exceptions.WebDriverException:no such session

    应该是browser对象关闭之后你又使用了