Одним из способов является использование встроенной функциональности стилей кадров данных pandas. Ниже приведен пример, взятый из документации для панд.
import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[0, 2] = np.nan
df.style.bar(subset=['A', 'B'], color='#d65f5f')
производит следующий вывод HTML:
![enter image description here](https://i.stack.imgur.com/YkBD2.png)