如何使用pandas对dataframe进行条件格式化并转换为图片
依赖安装
首先安装实现所需的第三方库:
pip install pandas numpy dataframe-image
完整实现代码
import pandas as pd import numpy as np import dataframe_image as dfi # 读取数据,样例代码为构造测试数据,实际使用替换为pd.read_excel/ pd.read_csv读取你的源文件即可 df = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D', 'E'], 'base': [120, 200, 89, 150, 95], 'c1': [0.1, 0.3, 0, 0.5, 0.2], 'c2': [0.7, 0, 0.2, 0.4, 0.1], 'c3': [0.2, 0.5, 0.8, 0, 0.3], 'c4': [0.4, 0.1, 0.3, 0.6, 0], 'c5': [0, 0.6, 0.1, 0.2, 0.7], 'c6': [0.3, 0, 0.5, 0.1, 0.4] }) # 定位需要格式化的c1-c6列 format_cols = [col for col in df.columns if col.startswith('c')] # 计算c1-c6全量数值的全局最大最小值,保证所有列用同一套色阶规则 all_vals = df[format_cols].values.flatten() global_min = all_vals.min() global_max = all_vals.max() # 替换c1-c6列的0值为空 df[format_cols] = df[format_cols].replace(0, np.nan) # 配置样式 styler = df.style # base列添加数据条 styler = styler.bar(subset=['base'], color='#5fba7d', align='mid') # c1-c6列配置统一色阶+百分比格式,空值不显示 styler = styler.background_gradient( subset=format_cols, cmap='Blues', # 可替换为你需要的色系,比如Greens、Oranges等 vmin=global_min, vmax=global_max ).format( subset=format_cols, formatter='{:.1%}'.format, na_rep='' ) # 导出为图片,若需要更高清晰度,可将table_conversion改为'chrome'(需要本地安装Chrome浏览器) dfi.export(styler, '格式化后表格.png', table_conversion='matplotlib')
内容的提问来源于stack exchange,提问作者Kundan
相关产品推荐
相关产品推荐

