日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Pandas来美化一波图表

發布時間:2024/9/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Pandas来美化一波图表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經常有粉絲問Pandas對于格式的美化操作,這不,他來了~

Pandas是一種高效的數據處理庫,它以dataframe和series為基本數據類型,呈現出類似excel的二維數據。

在Jupyter中,會美化Pandas的輸出。不同于IDE展示的文本形式,Jupyter可以通過CSS修改表格的樣式。

我們在做excel表格的時候,常常會對重要數據進行highlight,或者用不同顏色表示數據的大小。這在Pandas中也是可以實現的,而且非常簡潔。

Pandas提供了DataFrame.style屬性,它會返回Styler對象,用以數據樣式的美化。

一般的,我們需要將樣式函數作為參數傳遞到下面方法中,就可以實現圖表美化。

  • Styler.applymap: 作用于元素

  • Styler.apply:作用于行、列或整個表

下面通過一些例子,具體展示常用的美化形式。

一、高亮顯示

為便于展示,數據示例是用的2021世界人口數量前十國家數據

import?pandas?as?pd data?=?pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口數據.xlsx") data

我們先看下該表的信息:

data.info()

除了前兩列,其他列都為數字類型。

現在對指定列的最大值進行高亮處理:

def?highlight_max(s):'''對列最大值高亮(黃色)處理'''is_max?=?s?==?s.max()return?['background-color:?yellow'?if?v?else?''?for?v?in?is_max]data.style.apply(highlight_max,subset=['2021人口',?'2020人口',?'面積','單位面積人口','人口增幅','世界占比'])

如果不想對元素背景高亮處理,也可以直接更改指定元素顏色,從而達到突出重點的目的。

標記單位面積人口列大于200的元素:

def?color_red(s):is_max?=?s?>?200return?['color?:?red'?if?v?else?''?for?v?in?is_max]data.style.apply(color_red,subset=['單位面積人口'])

二、數據條顯示

Excel條件格式里,有一個數據條顯示方式,用以可視化表達數據大小。

Pandas Style方法中也有數據條的表達形式,用df.style.bar來實現。

還是用前面人口數據的例子,我們來看下如何操作數據條。

import?pandas?as?pd data?=?pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口數據.xlsx") #?數據條顯示指定列數據大小 data.style.bar(subset=['2021人口',?'2020人口'],?color='#FFA500')

三、色階顯示

色階也就是熱力圖,它和數據條一樣,都用來表達數據大小。

Pandas Style中色階的使用也很簡單,用df.style.background_gradient實現。

import?seaborn?as?sns#?使用seaborn獲取顏色 cm?=?sns.light_palette("green",?as_cmap=True) #?色階實現 data.style.background_gradient(cmap=cm,subset=['2021人口',?'2020人口',?'面積','單位面積人口','人口增幅','世界占比'])

可以通過選擇最大最小顏色比例,調節色階范圍。

調節前:

import?seaborn?as?sns#?色階實現,這里使用內置色階類型,不調節顏色范圍 data.style.background_gradient(cmap='viridis',high=0.2,low=0.1,subset=['2021人口',?'2020人口',?'面積','單位面積人口','人口增幅','世界占比'])

調節后:

import?seaborn?as?sns#?色階實現,這里使用內置色階類型,調節顏色范圍 data.style.background_gradient(cmap='viridis',high=0.5,low=0.3,subset=['2021人口',?'2020人口',?'面積','單位面積人口','人口增幅','世界占比'])

四、百分比顯示

有些數字需要百分比顯示才能準確表達,比如說人口數據里的人口增幅、世界占比。

Pandas可以數據框中顯示百分比,通過Styler.format來實現。

data.style.format("{:.2%}",subset=['人口增幅','世界占比'])

五、標記缺失值

數據集中可能會存在缺失值,如果想突出顯示缺失值,該怎么操作?

這里有好幾種常用的方法,一是用-符號替代,二是高亮顯示

先創建一個帶缺失值的表,還是用人口數據。

import?pandas?as?pd import?numpy?as?np data?=?pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口數據.xlsx") data.iloc[1,?4]?=?np.nan data.iloc[3,?1]?=?np.nan data.iloc[6,?6]?=?np.nan data

上面數據中有三個缺失值,我們用-符號替代缺失值:

data.style.format(None,?na_rep="-")

再試試對缺失值高亮顯示:

data.style.highlight_null(null_color='red')

附:將樣式輸出到excel

Pandas中的數據美化樣式不僅可以展示在notebook中,還可以輸出到excel。

這里使用to_excel方法,并用openpyxl作為內核

import?pandas?as?pd import?numpy?as?np data?=?pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口數據.xlsx") data.style.background_gradient(cmap='viridis',subset=['2021人口',?'2020人口',?'面積','單位面積人口','人口增幅','世界占比']).\to_excel('style.xlsx',?engine='openpyxl') ?

本文參考Pandas官方文檔Styling章節

推薦閱讀

Pandas處理數據太慢,來試試Polars吧!

懶人必備!只需一行代碼,就能導入所有的Python庫

絕!關于pip的15個使用小技巧

介紹10個常用的Python內置函數,99.99%的人都在用!

可能是全網最完整的 Python 操作 Excel庫總結!

總結

以上是生活随笔為你收集整理的用Pandas来美化一波图表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。