python - 在 Sklearn 中为 excel 输出着色

标签 python pandas dataframe colors scikit-learn

我想根据单个列(数据框中的 max_probabilities 列)对导出的输出数据框(输出格式:excel 文件)的每一行进行条件格式化。 如果 max_probabilities 中的概率大于 0.75,我希望将特定的整行涂成绿色,否则它必须涂成红色。 我该怎么做。(注意:我想为导出的 Excel 行着色而不是数据框) 数据框格式代码:

df=pd.DataFrame({'Details':x_test,'Amount':test_data.xn_Amount,'Category':Classified_Category,'Probability':max_probabilities})

这是我导出的数据框目前的样子。

enter image description here

谢谢

最佳答案

使用conditional formats但它只为列着色:

import string

df = pd.DataFrame({'Amount':[1,2,3],
                   'max_probabilities':[.1,2,.3]})
print (df)
   Amount  max_probabilities
0       1                0.1
1       2                2.0
2       3                0.3

writer = pd.ExcelWriter('pandas_conditional.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
red_format = workbook.add_format({'bg_color':'red'})
green_format = workbook.add_format({'bg_color':'green'})

#dict for map excel header, first A is index, so omit it
d = dict(zip(range(25), list(string.ascii_uppercase)[1:]))
#print (d)

col = 'max_probabilities'
excel_header = str(d[df.columns.get_loc(col)])
#get length of df
len_df = str(len(df.index) + 1)
rng = excel_header + '2:' + excel_header + len_df
print (rng)
C2:C4

worksheet.conditional_format(rng, {'type': 'cell',
                                      'criteria': '<',
                                       'value':     0.75,
                                       'format': red_format})

worksheet.conditional_format(rng, {'type': 'cell',
                                      'criteria': '>=',
                                       'value':   0.75,
                                       'format':  green_format})
writer.save()

如果要给行着色:

df = pd.DataFrame({'Amount':[1,2,3],
                   'Category':['a','d','f'],
                   'max_probabilities':[.1,2,.3]})
print (df)
   Amount Category  max_probabilities
0       1        a                0.1
1       2        d                2.0
2       3        f                0.3

def highlight(x):
    c1 = 'background-color: green'
    c2 = 'background-color: red' 
    #if want set no default colors 
    #c2 = ''  
    m = x['max_probabilities'] > .75
    df1 = pd.DataFrame(c2, index=x.index, columns=x.columns)
    df1.loc[m, :] = c1
    return df1

df.style.apply(highlight, axis=None).to_excel('styled.xlsx', engine='openpyxl')

关于python - 在 Sklearn 中为 excel 输出着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167224/

相关文章:

python - 从数据帧列中删除不连续的值

java - 生成的多项式回归值距坐标太远

python - 用于规范化矩阵中的值的列表理解

python - 如何减少 HDFStore 的大小开销?

python - 属性错误: 'Series' object has no attribute 'columns'

Pandas 第二大值(value)的栏目名称

python - 滚动窗口的中位数,不包括零

python - Fabric Sudo 无密码解决方案

pandas - 使用 pandas 数据框平均 txt 文件

python - 在下一列中为具有重复键的字典的每个值附加行