Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Highlight the negative values red and positive values black in Pandas Dataframe

  • Last Updated : 20 Aug, 2020

Let’s see various methods to Highlight the positive values red and negative values black in Pandas Dataframe.
First, Let’s make a Dataframe:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Python3




# Import Required Libraries
import pandas as pd
import numpy as np
  
  
# Create a dictionary for the dataframe
dict = {
  'Name': ['Sukritin', 'Sumit Tyagi'
           'Akriti Goel', 'Sanskriti',
           'Abhishek Jain'],
   'Age': [22, 20, 45, 21, 22],
  'Marks': [90, 84, -33, -87, 82]
}
  
# Converting Dictionary to
# Pandas Dataframe
df = pd.DataFrame(dict)
  
# Print Dataframe
print(df)

Output: 



Now, come to the highlighting part. Our objective is to highlight negative values red and positive values black.

Method 1: Using Dataframe.style.apply().

Syntax: DataFrame.style.apply(self, func, axis=0, subset=None, **kwargs)
Parameters: 

  • func: It should take a pandas.Series or pandas.DataFrame based on the axis and should return an object with the same shape. 
  • axis: {0 or ‘index’, 1 or ‘columns’, None}, default 0. Apply to each column (axis=0 or ‘index’), to each row (axis=1 or ‘columns’), or to the entire DataFrame at once with axis=None. 
  • subset: Set of columns or rows on which you want to call the func. 
  • **kwargs: Pass along to func.

Returns: Styler object.

Example 1: Highlighting text.

Python3




# Define a function for colouring 
# negative values red and 
# positive values black
def highlight_max(s):
    if s.dtype == np.object:
        is_neg = [False for _ in range(s.shape[0])]
    else:
        is_neg = s < 0
    return ['color: red;' if cell else 'color:black' 
            for cell in is_neg]
  
# Using apply method of style 
# attribute of Pandas DataFrame
df.style.apply(highlight_max)

Output: 



 

Example 2: Highlighting cells instead of text.

Python3




# Define a function which 
# returns the list for 
# df.style.apply() method
def highlight_max(s):
    if s.dtype == np.object:
        is_neg = [False for _ in range(s.shape[0])]
    else:
        is_neg = s < 0
    return ['background: red; color:white' 
            if cell else 'background:black; color:white' 
            for cell in is_neg]
  
# Using apply method of style 
# attribute of Pandas DataFrame
df.style.apply(highlight_max)

Output: 

 

Method 2: Using dataframe.style.applymap() method.

Syntax: DataFrame.style.applymap(self, func, subset=None, **kwargs)
Parameters: 

  • func: It takes a scalar value and return the scalar values 
  • subset: Set of columns or rows on which you want to call the func. 
  • **kwargs: Pass along to func.

Returns: Styler object.



Example 1: Highlighting text.

Python3




# Define a function for 
# colouring negative values 
# red and positive values black
def highlight_max(cell):
    if type(cell) != str and cell < 0 :
        return 'color: red'
    else:
        return 'color: black'
  
df.style.applymap(highlight_max)

Output: 

 

Example 2: Highlighting cells instead of text.

Python3




# Define a function which 
# returns string for 
# applymap() method
def highlight_max(cell):
    if type(cell) != str and cell < 0 :
        return 'background: red; color:black'
    else:
        return 'background: black; color: white'
  
df.style.applymap(highlight_max)

Output: 

 Note: pandas.DataFrame.applymap() method passes only single cell into the callable function while the pandas.DataFrame.apply() passes the pandas.Series to the callable function.

Reference: Styling in Pandas
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!