<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          對(duì)比Excel,一文掌握Pandas表格條件格式(可視化)

          共 5671字,需瀏覽 12分鐘

           ·

          2021-10-14 16:55

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          諸葛大名垂宇宙,宗臣遺像肅清高。

          ??大家好,我是才哥。

          本來(lái)這周不是加班周,但是畢竟項(xiàng)目趕進(jìn)度,還是需要加班著,咱們更文又變得慢了起來(lái)。

          最近有粉絲詢問Pandas表格可視化的一些問題,剛好前段時(shí)間也看過(guò),那么就結(jié)合之前處理Excel時(shí)的條件格式對(duì)著來(lái)看吧。

          所以,今天咱們隆重介紹一下Excel條件格式Pandas的表格可視化,走起!

          目錄:

          • 1. 概述

          • 2. 突出顯示單元格

            • 2.1. 高亮缺失值

            • 2.2. 高亮最大值

            • 2.3. 高亮最小值

            • 2.4. 高亮區(qū)間值

            • 2.5. 高亮分位數(shù)

          • 3. 色階(背景及文本漸變色)

            • 3.1. 背景漸變色

            • 3.2. 文本漸變色

          • 4. 數(shù)據(jù)條

          • 5. 數(shù)據(jù)格式化

          • 6. 自定義格式函數(shù)

          • 7. 其他

          1. 概述

          咱們先簡(jiǎn)單介紹一下什么是表格條件格式可視化,以常用的Excel為例說(shuō)明。

          在Excel菜單欄里,默認(rèn)(選擇)開始菜單,在中間部位有個(gè)條件格式控件,里面就是關(guān)于表格條件格式的方方面面。主要包含突出顯示單元格規(guī)則最前/最后規(guī)則數(shù)據(jù)條色階圖標(biāo)集以及規(guī)則管理等。

          條件格式

          基于以上,我們其實(shí)可以通過(guò)函數(shù)方式進(jìn)行多種條件的綜合,讓Excel表格可視化豐富多彩,比如以下截圖展示的就是色階效果!

          色階案例,數(shù)據(jù)截止8月5日

          在上圖中,我們對(duì)每列單獨(dú)進(jìn)行條件格式-色階設(shè)置,綠色->紅色 代表數(shù)值從小到大,可以很直觀的快速感受數(shù)值表現(xiàn)。

          所謂 表格條件格式可視化,就是對(duì)表格的數(shù)據(jù)按照一定的條件進(jìn)行可視化的展示(這里的可視化更多是指單元格背景色、字體顏色以及文本格式顯示等)。

          那么,Pandas作為表格化的數(shù)據(jù)處理工具,我們可以如何實(shí)現(xiàn) 表格條件格式可視化呢?!

          大殺器:df.style

          2. 突出顯示單元格

          在Excel條件格式中,突出顯示單元格規(guī)則提供的是大于、小于、等于以及重復(fù)值等內(nèi)置樣式,不過(guò)在Pandas中這些需要通過(guò)函數(shù)方法來(lái)實(shí)現(xiàn),我們放在后續(xù)介紹。這里介紹Pandas突出顯示缺失值最大值最小值區(qū)間值的函數(shù)方法以及Excel實(shí)現(xiàn)這些操作的自定義操作。

          2.1. 高亮缺失值

          df.style.highlight_null()

          Signature:
          df.style.highlight_null(
          ????null_color:?'str'?=?'red',
          ????subset:?'Subset?|?None'?=?None,
          ????props:?'str?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Highlight?missing?values?with?a?style.

          null_color用于指定高亮的背景色,默認(rèn)是紅色

          subset用于指定操作的列或行

          props用于突出顯示CSS屬性(后面案例中會(huì)涉及到)

          比如,我們可以指定高亮的背景色為橙色(顏色可以是英文名稱)

          比如,我們可以指定高亮的背景色為紫紅色(顏色可以是16進(jìn)制)

          2.2. 高亮最大值

          df.style.highlight_max()

          Signature:
          df.style.highlight_max(
          ????subset:?'Subset?|?None'?=?None,
          ????color:?'str'?=?'yellow',
          ????axis:?'Axis?|?None'?=?0,
          ????props:?'str?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Highlight?the?maximum?with?a?style.

          subset用于指定操作的列或行

          color用于指定顏色,默認(rèn)是黃色

          axis用于指定行最大、列最大或全部,默認(rèn)是列方向最大

          這里我們發(fā)現(xiàn)對(duì)于中文也有列最大高亮,至于為啥是蒙古其實(shí)我也不清楚,為了避免出現(xiàn)這種情況,有兩種方法:①將這一列設(shè)置為索引(這里不做演示),②采用subset指定

          指定顏色為灰色

          顯示全部最大值

          那么,Excel如何顯示最大值呢?這里我們以顯示全部最大值為例展開介紹,邏輯如下:

          1. 通過(guò)函數(shù)MAX獲取數(shù)據(jù)區(qū)域的最大值
          2. 然后編輯格式滿足單元格值等于這個(gè)最大值即可

          操作為:選中數(shù)據(jù)區(qū)域,進(jìn)行條件格式設(shè)置->編輯格式規(guī)則

          具體規(guī)則如下圖:

          我們就可以得到想要的效果:

          同樣的道理,我們可以根據(jù)需求高亮列或行的最大值、最小值等

          2.3. 高亮最小值

          df.style.highlight_min()

          參數(shù)基本同高亮最大值,這里不再贅述,看案例

          鏈?zhǔn)秸{(diào)用 最大最小值高亮

          2.4. 高亮區(qū)間值

          df.style.highlight_between

          Signature:
          df.style.highlight_between(
          ????subset:?'Subset?|?None'?=?None,
          ????color:?'str'?=?'yellow',
          ????axis:?'Axis?|?None'?=?0,
          ????left:?'Scalar?|?Sequence?|?None'?=?None,
          ????right:?'Scalar?|?Sequence?|?None'?=?None,
          ????inclusive:?'str'?=?'both',
          ????props:?'str?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Highlight?a?defined?range?with?a?style.

          subset用于指定操作的列或行

          color用于指定顏色,默認(rèn)是黃色

          axis用于指定行、列或全部,如果left或right作為序列給出,則應(yīng)用于這些序列的邊界

          left用于指定區(qū)間最小值

          right用于指定區(qū)間最大值

          inclusive用于確定是否左右閉包,可選'both', 'neither', 'left', 'right'

          props用于突出顯示CSS屬性

          高亮數(shù)量在[20, 30]的單元格

          props用于突出顯示CSS屬性,案例中我們將待高亮的部分顯示為字體顏色-白色背景色-紫色

          金牌數(shù)區(qū)間[20, 30]、銀牌數(shù)區(qū)間[10, 20]、銅牌數(shù)區(qū)間[5, 10]

          2.5. 高亮分位數(shù)

          df.style.highlight_quantile()

          Signature:
          df.style.highlight_quantile(
          ????subset:?'Subset?|?None'?=?None,
          ????color:?'str'?=?'yellow',
          ????axis:?'Axis?|?None'?=?0,
          ????q_left:?'float'?=?0.0,
          ????q_right:?'float'?=?1.0,
          ????interpolation:?'str'?=?'linear',
          ????inclusive:?'str'?=?'both',
          ????props:?'str?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Highlight?values?defined?by?a?quantile?with?a?style.

          subset用于指定操作的列或行

          color用于指定顏色,默認(rèn)是黃色

          axis用于指定行、列或全部

          q_left用于指定分位數(shù)左邊界,默認(rèn)是0

          q_right用于指定分位數(shù)右邊界,默認(rèn)是1

          inclusive用于確定是否左右閉包,可選'both', 'neither', 'left', 'right'

          props用于突出顯示CSS屬性

          比如,高亮各列獎(jiǎng)牌數(shù)前15%的值

          3. 色階(背景及文本漸變色)

          色階部分包含背景漸變色和文本漸變色

          3.1. 背景漸變色

          在Excel中,直接通過(guò)條件格式->色階 操作即可選擇想要的背景漸變色效果

          而在Pandas中,我們可以通過(guò)df.style.background_gradient()進(jìn)行背景漸變色的設(shè)置。

          Signature:
          df.style.background_gradient(
          ????cmap='PuBu',
          ????low:?'float'?=?0,
          ????high:?'float'?=?0,
          ????axis:?'Axis?|?None'?=?0,
          ????subset:?'Subset?|?None'?=?None,
          ????text_color_threshold:?'float'?=?0.408,
          ????vmin:?'float?|?None'?=?None,
          ????vmax:?'float?|?None'?=?None,
          ????gmap:?'Sequence?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Color?the?background?in?a?gradient?style.

          cmap用于指定matplotlib色條

          lowhigh用于指定最小最大值顏色邊界,區(qū)間[0, 1]

          axis用于指定行、列或全部,默認(rèn)是列方向

          subset用于指定操作的列或行

          text_color_threshold用于指定文本顏色亮度,區(qū)間[0, 1]

          vminvmax用于指定與cmap最小最大值對(duì)應(yīng)的單元格最小最大值

          lowhigh用于指定最小最大值顏色邊界,區(qū)間[0, 1]

          cmap用于指定matplotlib色條,采用seaborn美化樣式

          text_color_threshold用于指定文本顏色亮度,區(qū)間[0, 1]

          vminvmax用于指定與cmap最小最大值對(duì)應(yīng)的單元格最小最大值(10以下同色,70以上同色)

          我們可以看到以上對(duì)于缺失值來(lái)說(shuō),其背景色是黑色,我們可以通過(guò)鏈?zhǔn)椒椒ê透吡寥笔е祵?duì)缺失值背景色進(jìn)行修改

          3.2. 文本漸變色

          文本漸變色顧名思義就是對(duì)單元格的文本進(jìn)行顏色漸變,可以通過(guò)df.style.text_gradient()來(lái)操作,其參數(shù)和背景漸變色基本一致。

          4. 數(shù)據(jù)條

          在Excel中,直接通過(guò)條件格式->數(shù)據(jù)條 操作即可選擇想要的數(shù)據(jù)條效果

          而在Pandas中,我們可以通過(guò) df.style.bar()來(lái)進(jìn)行數(shù)據(jù)條繪制

          Signature:
          df.style.bar(
          ????subset:?'Subset?|?None'?=?None,
          ????axis:?'Axis?|?None'?=?0,
          ????color='#d65f5f',
          ????width:?'float'?=?100,
          ????align:?'str'?=?'left',
          ????vmin:?'float?|?None'?=?None,
          ????vmax:?'float?|?None'?=?None,
          )?->?'Styler'
          Docstring:
          Draw?bar?chart?in?the?cell?backgrounds.

          subset用于指定操作的列或行

          axis用于指定行、列或全部,默認(rèn)是列方向

          color用于指定數(shù)據(jù)條顏色

          width用于指定數(shù)據(jù)條長(zhǎng)度,默認(rèn)是100,區(qū)間[0, 100]

          vminvmax用于指定與數(shù)據(jù)條最小最大值對(duì)應(yīng)的單元格最小最大值

          align 數(shù)據(jù)條與單元格對(duì)齊方式,默認(rèn)是left左對(duì)齊,還有zero居中和mid位于(max-min)/2

          比如,獎(jiǎng)牌數(shù)(不算總的)最低0最高40+顏色為橙色+居中展示金牌差數(shù)據(jù)條長(zhǎng)度為50(也就是單元格一半的長(zhǎng)度)銀牌差mid對(duì)齊+數(shù)據(jù)條為單元格一半長(zhǎng)度+正負(fù)顯示不同顏色

          5. 數(shù)據(jù)格式化

          調(diào)整數(shù)據(jù)格式用到df.style.format()

          Signature:
          df.style.format(
          ????formatter:?'ExtFormatter?|?None'?=?None,
          ????subset:?'Subset?|?None'?=?None,
          ????na_rep:?'str?|?None'?=?None,
          ????precision:?'int?|?None'?=?None,
          ????decimal:?'str'?=?'.',
          ????thousands:?'str?|?None'?=?None,
          ????escape:?'str?|?None'?=?None,
          )?->?'StylerRenderer'
          Docstring:
          Format?the?text?display?value?of?cells.

          formatter 顯示格式

          subset用于指定操作的列或行

          na_rep用于指定缺失值的格式

          precision用于指定浮點(diǎn)位數(shù)

          decimal用于用作浮點(diǎn)數(shù)、復(fù)數(shù)和整數(shù)的十進(jìn)制分隔符的字符,默認(rèn)是.

          thousands用作浮點(diǎn)數(shù)、復(fù)數(shù)和整數(shù)的千位分隔符的字符

          escape用于特殊格式輸出(如html、latex等,這里不做展開,可參考官網(wǎng))

          比如,我們給數(shù)據(jù)加上單位,缺失值顯示為無(wú)

          設(shè)置小數(shù)點(diǎn)位數(shù)為0

          指定列進(jìn)行格式化

          分別對(duì)指定列進(jìn)行單獨(dú)格式化

          6. 自定義格式函數(shù)

          通過(guò)傳遞樣式函數(shù)來(lái)自定義格式:

          applymap() (elementwise):接受一個(gè)函數(shù),它接受一個(gè)值并返回一個(gè)帶有 CSS 屬性值對(duì)的字符串。

          apply()(column-/ row- /table-wise): 接受一個(gè)函數(shù),它接受一個(gè) Series 或 DataFrame 并返回一個(gè)具有相同形狀的 Series、DataFrame 或 numpy 數(shù)組,其中每個(gè)元素都是一個(gè)帶有 CSS 屬性的字符串-值對(duì)。此方法根據(jù)axis關(guān)鍵字參數(shù)一次傳遞一個(gè)或整個(gè)表的 DataFrame 的每一列或行。對(duì)于按列使用axis=0、按行使用axis=1,以及一次性使用整個(gè)表axis=None

          比如,我們定義一個(gè)函數(shù),如果金牌數(shù)<銀牌數(shù),則高亮金牌數(shù)這一列對(duì)應(yīng)的值

          比如,我們還可以定義函數(shù),如果金牌數(shù)<銀牌數(shù),則這一行數(shù)據(jù)都高亮

          又或者,我們可以根據(jù)不同的比值對(duì)每行進(jìn)行不同的高亮

          關(guān)于以上函數(shù)的寫法,我們還可以調(diào)用numpywhererepeat方法進(jìn)行優(yōu)化,如:

          7. 其他

          還有一些小操作,比如添加標(biāo)題、隱藏索引、隱藏指定列等等

          添加標(biāo)題

          隱藏索引

          隱藏指定列

          設(shè)置屬性

          如果一些單元格屬性和單元格值無(wú)關(guān),我們可以通過(guò)df.style.set_properties()來(lái)進(jìn)行定制化操作,比如:背景色-黑色字體顏色-草綠色邊框顏色-白色。(css樣式

          選中放大

          鼠標(biāo)選擇單元格會(huì)有放大效果

          效果演示

          導(dǎo)出Excel

          就直接to_excel就行了,dfs = df.style.xxx,然后dfs.to_excel()

          導(dǎo)出的excel截圖

          導(dǎo)出html

          以上就是本次全部?jī)?nèi)容,大家感興趣的話可以自己演示一遍熟悉熟悉,又或者想想日常工作中的一些條件格式需求,然后通過(guò)Pandas演示出來(lái)效果看看。


          小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說(shuō)一兩句吧~~

          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  视频三区在线 | 强开小嫩苞毛片一二三区 | 免费性爱网站 | 乱伦片网站| 野外打野不雅视频在线播放 |