添加背景渐变的pandas样式选项非常适合快速检查输出表.但是,它可以按行方式或按列方式应用.是否可以立即将其应用于整个数据框?
编辑:最低工作示例:
df = pd.DataFrame([[3,2,10,4],[20,1,3,2],[5,4,6,1]])
df.style.background_gradient()
Run Code Online (Sandbox Code Playgroud)
Gui*_*ini 15
目前,您无法background_gradient同时为Nickil Maveli指出的行/列设置.诀窍是自定义pandas函数background_gradient:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import colors
def background_gradient(s, m, M, cmap='PuBu', low=0, high=0):
rng = M - m
norm = colors.Normalize(m - (rng * low),
M + (rng * high))
normed = norm(s.values)
c = [colors.rgb2hex(x) for x in plt.cm.get_cmap(cmap)(normed)]
return ['background-color: %s' % color for color in c]
df = pd.DataFrame([[3,2,10,4],[20,1,3,2],[5,4,6,1]])
df.style.apply(background_gradient,
cmap='PuBu',
m=df.min().min(),
M=df.max().max(),
low=0,
high=0.2)
Run Code Online (Sandbox Code Playgroud)
您需要将轴设置为无。对我来说使用seaborn的最佳解决方案:
import seaborn as sns
import pandas as pd
cm = sns.color_palette("blend:white,green", as_cmap=True)
df.style.background_gradient(cmap = cm,axis=None)
Run Code Online (Sandbox Code Playgroud)
您可以使用axis=None摆脱调用中的最小和最大计算:
def background_gradient(s, m=None, M=None, cmap='PuBu', low=0, high=0):
print(s.shape)
if m is None:
m = s.min().min()
if M is None:
M = s.max().max()
rng = M - m
norm = colors.Normalize(m - (rng * low),
M + (rng * high))
normed = s.apply(norm)
cm = plt.cm.get_cmap(cmap)
c = normed.applymap(lambda x: colors.rgb2hex(cm(x)))
ret = c.applymap(lambda x: 'background-color: %s' % x)
return ret
df.style.apply(background_gradient, axis=None)
Run Code Online (Sandbox Code Playgroud)
编辑:您可能需要使用normed = s.apply(lambda x: norm(x.values))的这个工作对matplotlib 2.2
| 归档时间: |
|
| 查看次数: |
8498 次 |
| 最近记录: |