7

I like using the background_gradient as it helps me look at my dataframes in an excel way.
But I'm wondering if I there is a way I could map the colors to the figures in another dataframe.
For example, something I am keen to do is to color the dataframe using a dataframe of zscores so i can see quickly the value of outliers.

A = pd.DataFrame(np.random.randn(6, 3), columns=['a', 'b', 'c']) 
B = pd.DataFrame(np.random.randn(6, 3), columns=['a', 'b', 'c'])
A.style.background_gradient(???)

I'm wondering how to use background_gradient so that it uses the values in the dataframe B to style A.

Henry Ecker
  • 34,399
  • 18
  • 41
  • 57
Tanguy Bretagne
  • 440
  • 5
  • 15

1 Answers1

9

I don't see a different method other than altering the background_gradient code for transferring style from one dataframe to other i.e

import pandas as pd
import matplotlib.pyplot as plt  
from matplotlib import colors

def b_g(s, cmap='PuBu', low=0, high=0):
    # Pass the columns from Dataframe A 
    a = A.loc[:,s.name].copy()
    rng = a.max() - a.min()
    norm = colors.Normalize(a.min() - (rng * low),
                        a.max() + (rng * high))
    normed = norm(a.values)
    c = [colors.rgb2hex(x) for x in plt.cm.get_cmap(cmap)(normed)]
    return ['background-color: %s' % color for color in c]

B.style.apply(b_g,cmap='PuBu')

Output :

Dataframes

Hope it helps

Bharath M Shetty
  • 30,075
  • 6
  • 57
  • 108
  • Thanks Barath. I imagined it was going to be the way to do it. Thanks for showing the code to get that. Regards – Tanguy Bretagne Nov 20 '17 at 16:35
  • Anyway to save styler objects to a png/pdf? – thomas.mac Nov 20 '17 at 18:32
  • @thomas.mac I dont think we can save styler objects to a png. The answer is like applying the style on a different dataframe and return the style so the same is applied in the new dataframe. The solution only works if the shape of both is equal. – Bharath M Shetty Nov 20 '17 at 18:32
  • hi @Bharath, how do i modify your code to the effect of "axis=None", as above code shade column-wise. Thanks! – Felton Wang May 30 '22 at 09:41