如何为pandas DataFrame的WoE列添加颜色渐变填充效果?
解决方案
可行性说明
完全可以实现,分为交互式环境展示、导出Excel两种落地场景,具体操作如下:
场景1:Jupyter Notebook/Lab 等交互式环境展示
直接使用pandas内置的Styler模块即可快速实现,示例代码如下:
import pandas as pd # 替换为你自己的DataFrame即可 df = pd.DataFrame({ '特征名称': ['年龄分层', '月收入区间', '逾期次数', '名下资产量', '征信查询频次'], 'WoE': [0.92, -0.51, 1.37, -0.82, 0.28] }) # 仅对WoE列添加颜色渐变填充 styled_df = df.style.background_gradient( subset=['WoE'], # 限定生效列 cmap='RdBu_r', # 配色方案:负值为红色、0为白色、正值为蓝色,适配风控场景WoE展示习惯 vmin=df['WoE'].min(), vmax=df['WoE'].max() ) # 直接运行即可看到带渐变效果的表格 styled_df
可调整
cmap参数更换配色,常用可选值包括coolwarm、viridis、YlOrRd等。
场景2:导出到Excel文件并保留渐变填充
需要搭配xlsxwriter或openpyxl库实现,以xlsxwriter为例操作如下:
- 先安装依赖:
pip install xlsxwriter - 执行导出代码:
writer = pd.ExcelWriter('WoE统计结果.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='WoE明细', index=False) # 获取工作簿、工作表对象 workbook = writer.book worksheet = writer.sheets['WoE明细'] # 定位WoE列的位置,适配动态列顺序 woe_col_idx = df.columns.get_loc('WoE') # 数据行范围(跳过表头行) start_row = 1 end_row = len(df) # 添加三色渐变填充规则 worksheet.conditional_format( start_row, woe_col_idx, end_row, woe_col_idx, { 'type': '3_color_scale', 'min_color': '#5A8AC6', # 最小值对应颜色 'mid_color': '#FFFFFF', # 中间值对应颜色 'max_color': '#E86758' # 最大值对应颜色 } ) writer.close()
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

