{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# style - 自定义样式输出\n",
"\n",
"\n",
"```{admonition} 在线刷题\n",
":class: seealso\n",
"\n",
"检查 or 强化 `Pandas` 数据分析操作?👉在线体验「Pandas进阶修炼300题」\n",
"```\n",
"\n",
"```{note} \n",
"本页面代码可以[在线编辑、执行](../指引/在线执行.md)!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上面基于 `option` 的 `pandas` 相关设置是全局配置,一次设置会在关闭notebook前一直有效\n",
"\n",
"但相关常用的设置并不多,不能满足更多的个性化需求。\n",
"\n",
"幸运的是在 `pandas` 中提供 `Styler` 对象让我们进一步个性化展示数据。\n",
"\n",
"注意:基于 `style` 个性化设置**同样不会修改数据**,所有 `data.style.xxxx` 输出的数据均是一次性的(可以复用、导出),因此你应该在合适的时间选择使用该方法。\n",
"\n",
"下面仅列举常用的方法,若想了解更多可以查阅[**pandas官方文档对应文章👉**](https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 本页面数据说明\n",
"\n",
"为了更好的介绍相关操作,本页面使用 **某招聘数据** 数据进行展开,你应该对数据字段、数值、类型等相关信息做一个大致了解!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"hide-input",
"thebe-init"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" positionName | \n",
" createTime | \n",
" salary | \n",
" subwayline | \n",
" matchScore | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 数据分析 | \n",
" 2020-03-16 11:00:00 | \n",
" 37500 | \n",
" NaN | \n",
" 15.101875 | \n",
"
\n",
" \n",
" 1 | \n",
" 数据建模 | \n",
" 2020-03-16 11:08:00 | \n",
" 15000 | \n",
" NaN | \n",
" 32.559414 | \n",
"
\n",
" \n",
" 2 | \n",
" 数据分析 | \n",
" 2020-03-16 10:33:00 | \n",
" 3500 | \n",
" 4号线 | \n",
" 14.972357 | \n",
"
\n",
" \n",
" 3 | \n",
" 数据分析 | \n",
" 2020-03-16 10:10:00 | \n",
" 45000 | \n",
" 1号线 | \n",
" 12.874153 | \n",
"
\n",
" \n",
" 4 | \n",
" 数据分析 | \n",
" 2020-03-16 09:56:00 | \n",
" 30000 | \n",
" NaN | \n",
" 12.755375 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" positionName createTime salary subwayline matchScore\n",
"0 数据分析 2020-03-16 11:00:00 37500 NaN 15.101875\n",
"1 数据建模 2020-03-16 11:08:00 15000 NaN 32.559414\n",
"2 数据分析 2020-03-16 10:33:00 3500 4号线 14.972357\n",
"3 数据分析 2020-03-16 10:10:00 45000 1号线 12.874153\n",
"4 数据分析 2020-03-16 09:56:00 30000 NaN 12.755375"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"data = pd.read_csv(\"data.csv\", usecols=[\n",
" 'positionName', 'createTime', 'salary', 'subwayline', 'matchScore'], nrows=20, parse_dates=['createTime'])\n",
"\n",
"data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 隐藏索引\n",
"\n",
"\n",
"隐藏索引列"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [
{
"data": {
"text/html": [
" positionName | createTime | salary | subwayline | matchScore |
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 11:00:00 | \n",
" 37500 | \n",
" nan | \n",
" 15.101875 | \n",
"
\n",
" \n",
" 数据建模 | \n",
" 2020-03-16 11:08:00 | \n",
" 15000 | \n",
" nan | \n",
" 32.559414 | \n",
"
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 10:33:00 | \n",
" 3500 | \n",
" 4号线 | \n",
" 14.972357 | \n",
"
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 10:10:00 | \n",
" 45000 | \n",
" 1号线 | \n",
" 12.874153 | \n",
"
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 09:56:00 | \n",
" 30000 | \n",
" nan | \n",
" 12.755375 | \n",
"
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 09:54:00 | \n",
" 50000 | \n",
" nan | \n",
" 12.718732 | \n",
"
\n",
" \n",
" 数据分析 | \n",
" 2020-03-16 09:41:00 | \n",
" 30000 | \n",
" nan | \n",
" 12.615116 | \n",
"
\n",
" \n",
" 数据建模工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 35000 | \n",
" 2号线 | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 数据分析专家 | \n",
" 2020-03-16 10:57:00 | \n",
" 60000 | \n",
" nan | \n",
" 1.141952 | \n",
"
\n",
" \n",
" 数据分析师 | \n",
" 2020-03-16 11:18:00 | \n",
" 40000 | \n",
" 2号线 | \n",
" 1.177361 | \n",
"
\n",
" \n",
" 数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" nan | \n",
" 1.161869 | \n",
"
\n",
" \n",
" 大数据分析工程师(J11108) | \n",
" 2020-03-16 09:25:00 | \n",
" 30000 | \n",
" 2号线 | \n",
" 4.245066 | \n",
"
\n",
" \n",
" 数据分析工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 20000 | \n",
" 2号线 | \n",
" 1.091051 | \n",
"
\n",
" \n",
" 资深数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" nan | \n",
" 1.075559 | \n",
"
\n",
" \n",
" 数据分析师 | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" nan | \n",
" 1.053428 | \n",
"
\n",
" \n",
" 产品运营(偏数据分析) | \n",
" 2020-03-16 10:59:00 | \n",
" 27500 | \n",
" nan | \n",
" 1.015806 | \n",
"
\n",
" \n",
" 资深数据分析师(杭州) | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" nan | \n",
" 1.009167 | \n",
"
\n",
" \n",
" 大数据建模总监 | \n",
" 2020-03-16 11:08:00 | \n",
" 37500 | \n",
" nan | \n",
" 2.719454 | \n",
"
\n",
" \n",
" 数据建模专家-杭州-01546 | \n",
" 2020-03-16 11:17:00 | \n",
" 30000 | \n",
" nan | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 数据分析专家(游戏业务) | \n",
" 2020-03-16 10:19:00 | \n",
" 37500 | \n",
" 2号线 | \n",
" 0.834333 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.style.hide_index().set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 调整精度\n",
"\n",
"将带有小数点的列精度调整为小数点后2位"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [
{
"data": {
"text/html": [
" | positionName | createTime | salary | subwayline | matchScore |
\n",
" \n",
" 0 | \n",
" 数据分析 | \n",
" 2020-03-16 11:00:00 | \n",
" 37500 | \n",
" nan | \n",
" 15.10 | \n",
"
\n",
" \n",
" 1 | \n",
" 数据建模 | \n",
" 2020-03-16 11:08:00 | \n",
" 15000 | \n",
" nan | \n",
" 32.56 | \n",
"
\n",
" \n",
" 2 | \n",
" 数据分析 | \n",
" 2020-03-16 10:33:00 | \n",
" 3500 | \n",
" 4号线 | \n",
" 14.97 | \n",
"
\n",
" \n",
" 3 | \n",
" 数据分析 | \n",
" 2020-03-16 10:10:00 | \n",
" 45000 | \n",
" 1号线 | \n",
" 12.87 | \n",
"
\n",
" \n",
" 4 | \n",
" 数据分析 | \n",
" 2020-03-16 09:56:00 | \n",
" 30000 | \n",
" nan | \n",
" 12.76 | \n",
"
\n",
" \n",
" 5 | \n",
" 数据分析 | \n",
" 2020-03-16 09:54:00 | \n",
" 50000 | \n",
" nan | \n",
" 12.72 | \n",
"
\n",
" \n",
" 6 | \n",
" 数据分析 | \n",
" 2020-03-16 09:41:00 | \n",
" 30000 | \n",
" nan | \n",
" 12.62 | \n",
"
\n",
" \n",
" 7 | \n",
" 数据建模工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 35000 | \n",
" 2号线 | \n",
" 3.03 | \n",
"
\n",
" \n",
" 8 | \n",
" 数据分析专家 | \n",
" 2020-03-16 10:57:00 | \n",
" 60000 | \n",
" nan | \n",
" 1.14 | \n",
"
\n",
" \n",
" 9 | \n",
" 数据分析师 | \n",
" 2020-03-16 11:18:00 | \n",
" 40000 | \n",
" 2号线 | \n",
" 1.18 | \n",
"
\n",
" \n",
" 10 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" nan | \n",
" 1.16 | \n",
"
\n",
" \n",
" 11 | \n",
" 大数据分析工程师(J11108) | \n",
" 2020-03-16 09:25:00 | \n",
" 30000 | \n",
" 2号线 | \n",
" 4.25 | \n",
"
\n",
" \n",
" 12 | \n",
" 数据分析工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 20000 | \n",
" 2号线 | \n",
" 1.09 | \n",
"
\n",
" \n",
" 13 | \n",
" 资深数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" nan | \n",
" 1.08 | \n",
"
\n",
" \n",
" 14 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" nan | \n",
" 1.05 | \n",
"
\n",
" \n",
" 15 | \n",
" 产品运营(偏数据分析) | \n",
" 2020-03-16 10:59:00 | \n",
" 27500 | \n",
" nan | \n",
" 1.02 | \n",
"
\n",
" \n",
" 16 | \n",
" 资深数据分析师(杭州) | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" nan | \n",
" 1.01 | \n",
"
\n",
" \n",
" 17 | \n",
" 大数据建模总监 | \n",
" 2020-03-16 11:08:00 | \n",
" 37500 | \n",
" nan | \n",
" 2.72 | \n",
"
\n",
" \n",
" 18 | \n",
" 数据建模专家-杭州-01546 | \n",
" 2020-03-16 11:17:00 | \n",
" 30000 | \n",
" nan | \n",
" 3.03 | \n",
"
\n",
" \n",
" 19 | \n",
" 数据分析专家(游戏业务) | \n",
" 2020-03-16 10:19:00 | \n",
" 37500 | \n",
" 2号线 | \n",
" 0.83 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.style.set_precision(2).set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 标记缺失值\n",
"\n",
"将缺失值标记为`数据缺失`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [
{
"data": {
"text/html": [
" | positionName | createTime | salary | subwayline | matchScore |
\n",
" \n",
" 0 | \n",
" 数据分析 | \n",
" 2020-03-16 11:00:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 15.101875 | \n",
"
\n",
" \n",
" 1 | \n",
" 数据建模 | \n",
" 2020-03-16 11:08:00 | \n",
" 15000 | \n",
" 数据缺失 | \n",
" 32.559414 | \n",
"
\n",
" \n",
" 2 | \n",
" 数据分析 | \n",
" 2020-03-16 10:33:00 | \n",
" 3500 | \n",
" 4号线 | \n",
" 14.972357 | \n",
"
\n",
" \n",
" 3 | \n",
" 数据分析 | \n",
" 2020-03-16 10:10:00 | \n",
" 45000 | \n",
" 1号线 | \n",
" 12.874153 | \n",
"
\n",
" \n",
" 4 | \n",
" 数据分析 | \n",
" 2020-03-16 09:56:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 12.755375 | \n",
"
\n",
" \n",
" 5 | \n",
" 数据分析 | \n",
" 2020-03-16 09:54:00 | \n",
" 50000 | \n",
" 数据缺失 | \n",
" 12.718732 | \n",
"
\n",
" \n",
" 6 | \n",
" 数据分析 | \n",
" 2020-03-16 09:41:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 12.615116 | \n",
"
\n",
" \n",
" 7 | \n",
" 数据建模工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 35000 | \n",
" 2号线 | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 8 | \n",
" 数据分析专家 | \n",
" 2020-03-16 10:57:00 | \n",
" 60000 | \n",
" 数据缺失 | \n",
" 1.141952 | \n",
"
\n",
" \n",
" 9 | \n",
" 数据分析师 | \n",
" 2020-03-16 11:18:00 | \n",
" 40000 | \n",
" 2号线 | \n",
" 1.177361 | \n",
"
\n",
" \n",
" 10 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 1.161869 | \n",
"
\n",
" \n",
" 11 | \n",
" 大数据分析工程师(J11108) | \n",
" 2020-03-16 09:25:00 | \n",
" 30000 | \n",
" 2号线 | \n",
" 4.245066 | \n",
"
\n",
" \n",
" 12 | \n",
" 数据分析工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 20000 | \n",
" 2号线 | \n",
" 1.091051 | \n",
"
\n",
" \n",
" 13 | \n",
" 资深数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 1.075559 | \n",
"
\n",
" \n",
" 14 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 1.053428 | \n",
"
\n",
" \n",
" 15 | \n",
" 产品运营(偏数据分析) | \n",
" 2020-03-16 10:59:00 | \n",
" 27500 | \n",
" 数据缺失 | \n",
" 1.015806 | \n",
"
\n",
" \n",
" 16 | \n",
" 资深数据分析师(杭州) | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 1.009167 | \n",
"
\n",
" \n",
" 17 | \n",
" 大数据建模总监 | \n",
" 2020-03-16 11:08:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 2.719454 | \n",
"
\n",
" \n",
" 18 | \n",
" 数据建模专家-杭州-01546 | \n",
" 2020-03-16 11:17:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 19 | \n",
" 数据分析专家(游戏业务) | \n",
" 2020-03-16 10:19:00 | \n",
" 37500 | \n",
" 2号线 | \n",
" 0.834333 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(data\n",
".style\n",
".set_na_rep(\"数据缺失\")\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 高亮缺失值\n",
"\n",
"将缺失值高亮,颜色名`skyblue`"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [
{
"data": {
"text/html": [
" | positionName | createTime | salary | subwayline | matchScore |
\n",
" \n",
" 0 | \n",
" 数据分析 | \n",
" 2020-03-16 11:00:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 15.101875 | \n",
"
\n",
" \n",
" 1 | \n",
" 数据建模 | \n",
" 2020-03-16 11:08:00 | \n",
" 15000 | \n",
" 数据缺失 | \n",
" 32.559414 | \n",
"
\n",
" \n",
" 2 | \n",
" 数据分析 | \n",
" 2020-03-16 10:33:00 | \n",
" 3500 | \n",
" 4号线 | \n",
" 14.972357 | \n",
"
\n",
" \n",
" 3 | \n",
" 数据分析 | \n",
" 2020-03-16 10:10:00 | \n",
" 45000 | \n",
" 1号线 | \n",
" 12.874153 | \n",
"
\n",
" \n",
" 4 | \n",
" 数据分析 | \n",
" 2020-03-16 09:56:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 12.755375 | \n",
"
\n",
" \n",
" 5 | \n",
" 数据分析 | \n",
" 2020-03-16 09:54:00 | \n",
" 50000 | \n",
" 数据缺失 | \n",
" 12.718732 | \n",
"
\n",
" \n",
" 6 | \n",
" 数据分析 | \n",
" 2020-03-16 09:41:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 12.615116 | \n",
"
\n",
" \n",
" 7 | \n",
" 数据建模工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 35000 | \n",
" 2号线 | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 8 | \n",
" 数据分析专家 | \n",
" 2020-03-16 10:57:00 | \n",
" 60000 | \n",
" 数据缺失 | \n",
" 1.141952 | \n",
"
\n",
" \n",
" 9 | \n",
" 数据分析师 | \n",
" 2020-03-16 11:18:00 | \n",
" 40000 | \n",
" 2号线 | \n",
" 1.177361 | \n",
"
\n",
" \n",
" 10 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 1.161869 | \n",
"
\n",
" \n",
" 11 | \n",
" 大数据分析工程师(J11108) | \n",
" 2020-03-16 09:25:00 | \n",
" 30000 | \n",
" 2号线 | \n",
" 4.245066 | \n",
"
\n",
" \n",
" 12 | \n",
" 数据分析工程师 | \n",
" 2020-03-16 11:18:00 | \n",
" 20000 | \n",
" 2号线 | \n",
" 1.091051 | \n",
"
\n",
" \n",
" 13 | \n",
" 资深数据分析师 | \n",
" 2020-03-16 10:57:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 1.075559 | \n",
"
\n",
" \n",
" 14 | \n",
" 数据分析师 | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 1.053428 | \n",
"
\n",
" \n",
" 15 | \n",
" 产品运营(偏数据分析) | \n",
" 2020-03-16 10:59:00 | \n",
" 27500 | \n",
" 数据缺失 | \n",
" 1.015806 | \n",
"
\n",
" \n",
" 16 | \n",
" 资深数据分析师(杭州) | \n",
" 2020-03-16 10:59:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 1.009167 | \n",
"
\n",
" \n",
" 17 | \n",
" 大数据建模总监 | \n",
" 2020-03-16 11:08:00 | \n",
" 37500 | \n",
" 数据缺失 | \n",
" 2.719454 | \n",
"
\n",
" \n",
" 18 | \n",
" 数据建模专家-杭州-01546 | \n",
" 2020-03-16 11:17:00 | \n",
" 30000 | \n",
" 数据缺失 | \n",
" 3.033237 | \n",
"
\n",
" \n",
" 19 | \n",
" 数据分析专家(游戏业务) | \n",
" 2020-03-16 10:19:00 | \n",
" 37500 | \n",
" 2号线 | \n",
" 0.834333 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(data\n",
".style\n",
".set_na_rep(\"数据缺失\")\n",
".highlight_null(null_color='skyblue')\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 高亮数值列最大值\n",
"\n",
"将 数值格式列的最大值进行高亮"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"data.style.highlight_max().set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 高亮数值列最小值\n",
"\n",
"将 数值格式列的最小值进行高亮"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"data.style.highlight_min().set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 同时高亮最大最小值\n",
"\n",
"\n",
"同时高亮最大值(颜色代码为`#F77802`)与最小值(颜色代码为`#26BE49`)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".highlight_max(color='#F77802')\n",
".highlight_min(color='#26BE49')\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 指定区间高亮\n",
"\n",
"\n",
"高亮 salary 列范围在 3000 - 10000 的数值"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"# 需要 pandas 版本大于 1.3.0 才可以执行\n",
"# (data\n",
"# .style\n",
"# .highlight_between(left=3000, right=10000, subset=['salary'])\n",
"# .set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 渐变显示数值列\n",
"\n",
"\n",
"将数值格式的列使用渐变色(绿色)进行显示,以突出趋势"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"import seaborn as sns\n",
"\n",
"cm = sns.light_palette(\"green\", as_cmap=True)\n",
"\n",
"(data\n",
".style\n",
".background_gradient(cmap=cm)\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 修改字体颜色\n",
"\n",
"将 `salary` 列修改为红色字体"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".set_properties(\n",
" subset=['salary'], **{'color': 'red'})\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 修改背景颜色、对齐方式、字体大小\n",
"\n",
"将整个 `dataframe` 进行如下设置:\n",
"- 居中\n",
"- 背景色修改为 `#F8F8FF`\n",
"- 字体:13px"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 综合(链式)设置\n",
"\n",
"\n",
"除了上面的单个设置,还可以将多个设置进行结合,下面对整个 `dataframe` 进行如下设置:\n",
"- 居中\n",
"- 背景色修改为 `#F8F8FF`\n",
"- 字体:13px\n",
"\n",
"并将 `salary` 列字体修改为红色"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})\n",
".set_properties(\n",
" subset=['salary'], **{'color': 'red'})\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 导出样式\n",
"\n",
"\n",
"将上一题带有样式的 pandas 数据框导出为本地 Excel(.xlsx格式)"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [],
"source": [
"(data\n",
".style\n",
".set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})\n",
".set_properties(\n",
" subset=['salary'], **{'color': 'red'})).to_excel('带有样式导出.xlsx')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 制作指定列条形图\n",
"\n",
"在 `pandas` 中对 `salary` 列使用条形图进行可视化,指定颜色`skyblue`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".bar(subset=['salary'],color='skyblue')\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 自定义样式\n",
"\n",
"将 `salary` 列数值大于 30000 的单元格字体修改为红色"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"def my_style(val):\n",
"\n",
" color = 'red' if val > 30000 else 'black'\n",
" return 'color: %s' % color\n",
"\n",
"\n",
"data.style.applymap(my_style, subset=\"salary\").set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 格式化输出日期类型\n",
"\n",
"\n",
"将 `createTime` 列格式化输出为 `xx年xx月xx日` "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"data.style.format({\"createTime\": lambda t: t.strftime(\"%Y年%m月%d日\")}).set_table_attributes('style=\"font-size: 10px\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 自定义格式化数据\n",
"\n",
"\n",
"- 在 `salary` 列后增加\"元\"\n",
"- 对 `matchScore` 列保留两位小数并增加\"分\"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"output_scroll"
]
},
"outputs": [],
"source": [
"(data\n",
".style\n",
".format(\"{0:,.2f}分\", subset=\"matchScore\")\n",
".format(\"{\"\"}元\", subset=\"salary\")\n",
".set_table_attributes('style=\"font-size: 10px\"'))"
]
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "384px"
},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 4
}