当前位置:主页 > 查看内容

怎么把pandas.DataFrame搞的花里胡哨??

发布时间:2021-08-21 00:00| 位朋友查看

简介:首发公众号pythonic生物人 平日看到的pandas.DataFrame数据是这个样子的~ 平淡无奇索然无味读了本文后可以这样子了~ 这样子~? 或者这样子~ 目录 1 - style.applymap着色符合条件的每个元素 2 -?apply着色符合条件的column-/row-/table-wise 3 -?style.applym……

首发公众号:pythonic生物人


平日看到的pandas.DataFrame数据是这个样子的~

平淡无奇,索然无味,读了本文后,可以这样子了~

这样子~?

或者这样子~


目录

1 - style.applymap着色符合条件的每个元素

2 -?apply着色符合条件的column-/row-/table-wise

3 -?style.applymap、apply联合使用

4 -??style.background_gradient设置背景填充色

5 -?style.bar绘制Series柱状图

6 - to_excel导出个性化结果到excel中

7 - 更多设置


以上个性化的设置主要用到pd.DataFrame.style的如下属性:

['apply', 'applymap', 'background_gradient', 'bar', 'caption', 'cell_ids', 'clear', 'columns', 'ctx', 'data', 'env', 'export', 'format', 'from_custom_template', 'hidden_columns', 'hidden_index', 'hide_columns', 'hide_index', 'highlight_max', 'highlight_min', 'highlight_null', 'index', 'loader', 'na_rep', 'pipe', 'precision', 'render', 'set_caption', 'set_na_rep', 'set_precision', 'set_properties', 'set_table_attributes', 'set_table_styles', 'set_uuid', 'table_attributes', 'table_styles', 'template', 'to_excel', 'use', 'uuid', 'where']

本文介绍部分~

1 - style.applymap着色符合条件的每个元素

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat(
    [df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))], axis=1)

# 添加缺省值
df.iloc[3, 3] = np.nan
df.iloc[0, 2] = np.nan

# style.applymap着色符合条件的每个元素
def color_negative_red(val):
    """
    小于0的元素上红色、反之上蓝色
    """
    color = '#c72e29' if val < 0 else '#01a2d9'
    return 'color: %s' % color

s = df.style.applymap(color_negative_red)
s

2 -?apply着色符合条件的column-/row-/table-wise

def highlight_max(s):
    '''
    对DataFrame的Seris中最大值上绿色
    '''
    is_max = s == s.max()
    return ['background-color: #74C476' if v else '' for v in is_max]

df.style.apply(highlight_max)

3 -?style.applymap、apply联合使用

#.号连接即可
df.style.\
    applymap(color_negative_red).\
    apply(highlight_max)

4 -??style.background_gradient设置背景填充色

import seaborn as sns

s = df.style.background_gradient(cmap='Set2_r')
s

5 -?style.bar绘制Series柱状图

df.style.bar(subset=['A', 'B'], align='mid', color=['#dc2624', '#649E7D'])

import pandas as pd
from IPython.display import HTML

# Test series
test1 = pd.Series([-100, -60, -30, -20], name='All Negative')
test2 = pd.Series([10, 20, 50, 100], name='All Positive')
test3 = pd.Series([-10, -5, 0, 90], name='Both Pos and Neg')

head = """
<table>
    <thead>
        <th>Align</th>
        <th>All Negative</th>
        <th>All Positive</th>
        <th>Both Neg and Pos</th>
    </thead>
    </tbody>

"""

aligns = ['left', 'zero', 'mid']
for align in aligns:
    row = "<tr><th>{}</th>".format(align)
    for series in [test1, test2, test3]:
        s = series.copy()
        s.name = ''
        row += "<td>{}</td>".format(
            s.to_frame().style.bar(align=align,
                                   color=['#dc2624', '#649E7D'],
                                   width=100).render())  #testn['width']
    row += '</tr>'
    head += row

head += """
</tbody>
</table>"""

HTML(head)

6 - to_excel导出个性化结果到excel中

df.style.\
    applymap(color_negative_red).\
    apply(highlight_max).\
    to_excel('styled.xlsx', engine='openpyxl')

7 - 更多设置

https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html

首发公众号:pythonic生物人

?

;原文链接:https://blog.csdn.net/qq_21478261/article/details/115773807
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:python文件名批量重命名脚本 下一篇:没有了

推荐图文


随机推荐