使用Python/Pandas在Excel上创建颜色渐变的最简单方法是什么?

16

我有一些数据,使用pandas的ExcelWriter将其输出到Excel文件中。在整个数据输出到Excel文件后,通过Python以编程方式应用条件格式化的最简单方法是什么?

我想能够(通过Python)执行与在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文件后修改它),但其中写道“它[XLSXWriter]无法读取或修改现有的Excel XLSX文件。”

请告诉我是否可以想到解决方案或指引我正确的方向。

1个回答

26

这是一个如何将条件格式应用于由Pandas创建的XlsxWriter Excel文件的示例:

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工作


感谢您的服务。 - jenny
我该如何指定我想要的颜色? - jenny
@jenny。在上面链接的文档中有关于设置颜色和其他属性的说明。 - jmcnamara
我的错,我找到了。我弄明白了。谢谢。 - jenny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接