pandas conditional_format
在数据分析和处理过程中,经常需要根据不同条件对数据进行样式的调整,比如高亮显示特定数值或根据条件设置不同的颜色。pandas库提供了style
属性,让我们可以很方便地对数据框进行条件格式化,使数据更易于分析和理解。
设置条件格式化
要对数据框进行条件格式化,首先需要创建一个样式函数,然后使用style.apply
方法将样式函数应用于数据框。下面是一个示例代码:
import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]}
df = pd.DataFrame(data)
def highlight_max(s):
is_max = s == s.max()
return ['background-color: yellow' if v else '' for v in is_max]
df.style.apply(highlight_max)
运行上述代码后,会将每列最大值所在的单元格背景色设置为黄色。
示例1:高亮显示大于平均值的数值
下面的示例代码将大于每列平均值的数值高亮显示为红色:
import pandas as pd
data = {'A': [10, 15, 20, 25, 30],
'B': [5, 10, 15, 20, 25],
'C': [20, 25, 30, 35, 40]}
df = pd.DataFrame(data)
def highlight_above_mean(s):
is_above_mean = s > s.mean()
return ['color: red' if v else '' for v in is_above_mean]
df.style.apply(highlight_above_mean)
运行结果如下所示:
A | B | C |
---|---|---|
10 | 20 | |
| 25 | ||
20 | 15 | 30 |
25 | 20 | 35 |
30 | 25 | 40 |
示例2:根据列和行标签设置条件格式
除了根据数据数值进行条件格式化外,还可以根据行和列标签来设置样式。下面的示例代码将’A’列和第一行的单元格设置为灰色:
def set_background_color(df):
style_df = df.style
style_df = style_df.set_table_styles([{'selector': 'th', 'props': [('background-color', 'lightgrey')]}])
style_df = style_df.set_table_styles([{'subset': pd.IndexSlice[:, ['A']], 'props': 'background-color: lightgrey'}])
return style_df
df.style.apply(set_background_color)
运行结果如下所示:
A | B | C |
---|---|---|
10 | 5 | 20 |
15 | 10 | 25 |
20 | 15 | 30 |
25 | 20 | 35 |
30 | 25 | 40 |
总结
通过pandas的style
属性,我们可以轻松对数据框进行条件格式化,使得数据呈现更加直观和易于理解。在实际数据分析工作中,条件格式化可以帮助我们更快速地发现数据中的规律和异常值,从而更好地指导决策和分析过程。