Самый простой способ создать градиент цвета на excel с помощью python/pandas?

Итак, у меня есть данные, которые я выводил в файл excel с помощью pandas 'ExcelWriter. После того как все данные выводятся в файл Excel, какой простой способ применить условное форматирование к нему программным путем с помощью Python?

Я хочу иметь возможность выполнить эквивалент (через Python) выбора (в Excel) всех заполненных ячеек в листе Excel и нажатия "Условное форматирование" > "Цветовые шкалы". Конечным результатом является градиент цветов, основанный на значениях, "карта тепла", если хотите.

Это то, что я делаю для генерации данных:

writer = ExcelWriter('Data' + today +'.xls')
... processing data ... 
df.to_excel(writer, sheet_name = 'Models', startrow = start_row, index=False)

После записи данных мне нужен способ применить условное форматирование с помощью python. Чтобы сделать это простым, я хочу, чтобы в цветах были более темные оттенки синего, более положительные ( > 0) значения и темные оттенки красного, тем более отрицательные значения (< 0), а ячейка будет белой, если значение равно 0.

Я попробовал посмотреть в xlsxwriter (в надежде, что смогу изменить файл excel после его создания), но в документации говорится, что "It [XLSXwriter] не может читать или изменять существующие файлы Excel XLSX".

Пожалуйста, дайте мне знать, можете ли вы подумать о решении или указать мне в правильном направлении.

Ответ 1

Ниже приведен пример применения условного формата к файлу Excel XlsxWriter, созданному с помощью Pandas:

import pandas as pd

# Some sample data to plot.
list_data = [30, 40, 50, 40, 20, 10, 5]

# Create a Pandas dataframe from the data.
df = pd.DataFrame(list_data)

# Create a Pandas Excel writer using XlsxWriter as the engine.
excel_file = 'testfile.xlsx'
sheet_name = 'Sheet1'

writer = pd.ExcelWriter(excel_file, engine='xlsxwriter')
df.to_excel(writer, sheet_name=sheet_name)

# Access the XlsxWriter workbook and worksheet objects from the dataframe.
# This is equivalent to the following using XlsxWriter on its own:
#
#    workbook = xlsxwriter.Workbook('filename.xlsx')
#    worksheet = workbook.add_worksheet()
#
workbook = writer.book
worksheet = writer.sheets[sheet_name]

# Apply a conditional format to the cell range.
worksheet.conditional_format('B2:B8', {'type': '3_color_scale'})

# Close the Pandas Excel writer and output the Excel file.
writer.save()

Результат выглядит следующим образом:

enter image description here

Смотрите документы XlsxWriter на Условное форматирование, чтобы узнать, как вы можете изменить цвета или другие свойства.

См. также Работа с Python Pandas и XlsxWriter.