当我们使用pandas将数据导出到Excel时,有时候希望能够对导出的Excel文件的某些单元格进行涂色,使得该文件更加易于读取和理解。本文将详细讲解如何使用python的pandas库实现对Excel文件的颜色添加操作。
步骤一:导入必要的模块
我们在使用pandas库之前需要先安装,并导入必要的模块。在这里,我们需要用到pandas,openpyxl以及xlwt库:
import pandas as pd
from openpyxl.styles import Color, Fill
from openpyxl.styles import PatternFill
import xlwt
from xlwt import Workbook
步骤二:创建测试数据
接下来我们需要创建测试数据。在这个例子中,我们使用pandas库中的DataFrame()函数创建一个包含4行4列随机数的DataFrame对象:
import numpy as np
np.random.seed(24)
df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD'))
df
运行这段代码,可以得到以下测试数据:
A B C D
0 0.524640 0.000940 1.343809 -0.713544
1 -0.831154 -2.370232 -1.860761 -0.860757
2 -0.269056 1.147046 -0.130464 0.352163
3 -0.513375 0.424368 0.665595 -0.119990
步骤三:创建Excel文件
接下来我们需要将DataFrame对象写入到Excel文件中。在这里,我们使用xlwt库中的Workbook()函数创建一个新的Excel文件,并将数据写入到该文件中:
book = Workbook()
sheet1 = book.add_sheet('Sheet 1')
for row in range(df.shape[0]):
for col in range(df.shape[1]):
sheet1.write(row+1, col+1, str(df.iloc[row,col]))
这里我们使用一个嵌套循环,将每个DataFrame对象的元素写入到Excel文件的单元格中。注意,在使用sheet1.write()函数写入数据时,我们需要将数据转换为字符串格式。(这是因为Excel中的单元格只能存储字符串或数字两种数据类型)
步骤四:添加颜色
现在我们可以开始添加颜色了。在这里,我们使用openpyxl库中的PatternFill()函数来创建一种新的填充,然后使用openpyxl库中的cell.fill属性将该填充应用到Excel文件的单元格中。
for row in range(df.shape[0]):
for col in range(df.shape[1]):
if df.iloc[row,col] > 0:
fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")
sheet1.cell(row=row+1, column=col+1).fill = fill
在这个例子中,我们将所有大于0的单元格填充为绿色。填充的样式通过PatternFill()函数创建,我们将其赋值给相应的单元格即可。
步骤五:保存文件
保存我们更新后的文件,以便能够进一步处理或打印该文件。
book.save("output.xls")
以上就是使用pandas和openpyxl实现Excel文件颜色填充的完整攻略。下面是两个简单的示例,运行这两个示例会自动生成对应的Excel文件,并将数据中大于0的单元格涂为红色和蓝色:
# 示例一
fill_red = PatternFill(start_color='FFFF0000', end_color='FFFF0000', fill_type='solid')
for row in range(df.shape[0]):
for col in range(df.shape[1]):
if df.iloc[row,col] > 0:
sheet1.cell(row=row+1, column=col+1).fill = fill_red
# 示例二
fill_blue = PatternFill(start_color='FFADD8E6', end_color='FFADD8E6', fill_type='solid')
for row in range(df.shape[0]):
for col in range(df.shape[1]):
if df.iloc[row,col] < 0:
sheet1.cell(row=row+1, column=col+1).fill = fill_blue
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas to_excel 添加颜色操作 - Python技术站