Самый простой способ создать градиент цвета на 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.