I am able to import data from an excel file using Pandas by using:
xl = read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA'])
Now that I have all the data in xl as DataFrame. I would like to colour some cells in that data based on conditions defined in another function and export the same (with colour coding) to an Excel file.
Can someone tell me how should I go about this?
Thank you.
try something like this:
More info here: https://xlsxwriter.readthedocs.org/format.html
Pandas has a relatively new
Styler
feature where you can apply conditional formatting type manipulations to dataframes. http://pandas.pydata.org/pandas-docs/stable/style.htmlYou can use some of their built-in functions like
background_gradient
orbar
to replicate excel-like features like conditional formatting and data bars. You can also format cells to display percentages, floats, ints, etc. without changing the original dataframe.Here's an example of the type of chart you can make using
Styler
(this is a nonsense chart but just meant to demonstrate features):To harness the full functionality of
Styler
you should get comfortable with theStyler.apply()
andStyler.applymap()
APIs. These allow you to create custom functions and apply them to the table's columns, rows or elements. For example, if I wanted to color a +ive cell green and a -ive cell red, I'd create a functionand call it on my
Styler
object, i.e.,df.style.applymap(_color_red_or_green)
.With respect to exporting back to Excel, as far as I'm aware this is not supported in
Styler
yet so I'd probably go the xlsxwriter route if you NEED Excel for some reason. However, in my experience this is a great pure Python alternative, for example along with matplotlib charts and in emails/reports.There are quite a few ideas about styling the cells on the Pandas website. However it ist mentioned: This is a new feature and still under development. We'll be adding features and possibly making breaking changes in future releases