码迷,mamicode.com
首页 > 其他好文 > 详细

pandas之表格样式

时间:2019-08-11 22:48:28      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:gre   com   book   div   方法   mic   处理   note   code   

在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之表格样式

标签:gre   com   book   div   方法   mic   处理   note   code   

原文地址:https://www.cnblogs.com/Forever77/p/11336981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!