點選上方 "程式員小樂"關注, 星标或置頂一起成長
每天淩晨00點00分, 第一時間與你相約
每日英文
Good friends are like stars. You don’t always see them, but you know they’re always there.
好朋友就像是星星。你不一定總是能見到他們,但你知道,他們會一直在那裡。
每日掏心話
人的一生難免會遇到各種各樣的溝溝坎坎,身在局中,你會以為自己過不去了。
來自:公衆号 讀芯術 | 責編:樂樂

程式員小樂(ID:study_tech)第 937 次推文 圖源:百度
往日回顧:有個程式員老公有多爽???
正文
流行 Python 資料分析庫 Pandas 中的繪圖功能一直是迅速繪制圖表的首選之一。但是,其可用的可視化效果總是十分粗略,實用有餘、美觀不足。
筆者常用 Pandas 的繪圖功能快速地執行一些可視的資料探索,但在介紹資料洞察時,我會使用“更美觀”的繪圖庫(如 Plotly 或 Bokeh )來重做可視化。
自最新的 Pandas 版本0.25.3釋出後,無需這樣做了,現在我們可以使用第三方可視化庫作為 Pandas 繪圖功能的後端。Plotly是一款基于 web 實作互動式可視化的流行Python庫,其最近釋出了 Pandas繪圖後端。
來看看如何使用 Plotly 和 Bokeh 後端建立更豐富的可視化效果。
使用不同的後端
想要激活繪圖功能的不同後端需在導入 pandas 後,添加此行代碼:
pd.options.plotting.backend = plotly
目前可用的後端有:
· Plotly
· Holoviews
· Matplotlib
· Pandas _bokeh
· Hyplot
Plotly後端
Plotly是一個 Python庫,其支援豐富的互動式可視化效果。Plotly包的好處之一在于它是在庫的 Javascript 版本之上建構的,這意味着圖表會基于Web,可以顯示為 HTML 檔案或嵌入到基于Python的Web應用程式中。使用者還可以将可視化内容下載下傳為高品質的圖像檔案,以便在文檔或論文中使用。
下面來浏覽一些Plotly作為Pandas繪圖後端的快速示例。
如果還沒有安裝Plotly ,則需要使用pip intsall plotly來安裝。如果是在Jupyterlab中使用 Plotly ,則需要額外執行幾個安裝步驟來顯示可視化效果。首先,安裝IPywaidgets:
pipenv install jupyterlab " ipywidgets>=7.5"pip install jupyterlab "ipywidgets>=7.5"
然後運作以下指令以安裝Plotly擴充:
jupyter labextension install [email protected]
為了說明繪圖後端的用法,使用openml.org名為“wine(葡萄酒)”的資料集。
import pandas as pd import numpy as np from sklearn.datasets import fetch_openml pd.options.plotting.backend = plotly X,y =fetch_openml("wine", version=1, as_frame=True, return_X_y=True) data = pd.concat([X,y], axis=1) data.head()
該資料集由各類葡萄酒的多個特征和相應的标簽組成。下圖顯示了資料集的前幾行。
繪圖功能的工作方式與标準Pandas繪圖功能的工作方式大緻相同,隻是現在可視化效果同Plotly一樣豐富。下面的代碼繪制了資料集中兩個特征之間的關系。
fig = data[[ Alcohol , Proline ]].plot.scatter(y= Alcohol , x= Proline ) fig.show()
可以通過組合 Pandas 的groupby函數建立一個柱狀圖來總結類之間的平均色調差異:
data[[ Hue , class ]].groupby([ class ]).mean().plot.bar()
将類添加到之前建立的散點圖中。使用Plotly,可以輕松地給每個類使用不同的顔色,以便直覺地區分:
fig = data[[ Hue , Proline , class ]].plot.scatter(x= Hue , y= Proline , color= class , title= Proline and Hue by wine class ) fig.show()
Bokeh 後端
Bokeh 也可以提供豐富互動式可視化效果。其可視化圖表可以在 Web 浏覽器中檢視,嵌入到 Web應用程式中或用于建立互動式儀表闆。Bokeh 甚至有一個流式 API,可以為流資料(如金融市場資料)建立實時可視化圖表。
庫可以通過pip來安裝:
pip install pandas-bokeh
要在 Jupyterlab中顯示 Bokeh的可視化效果,需要安裝兩個新的擴充:
jupyter labextension install @jupyter-widgets/jupyterlab-managerjupyterlabextension install @bokeh/jupyter_bokeh
使用 Bokeh 後端重新建立之前的散點圖:
pd.options.plotting.backend = pandas_bokeh import pandas_bokeh from bokeh.io import output_notebook from bokeh.plotting import figure, show output_notebook() p1= data.plot_bokeh.scatter(x= Hue , y= Proline , category= class , title= Proline and Hue by wine class , show_figure=False) show(p1)
可視化效果如下:
Bokeh 有一個plot_grid函數,可為多個圖表建立儀表闆式布局。下面的代碼在網格布局中建立四個圖表:
output_notebook() p1 = data.plot_bokeh.scatter(x= Hue , y= Proline , category= class , title= Proline and Hue by wine class , show_figure=False) p2 = data[[ Hue , class ]].groupby([ class ]).mean().plot.bar(title= Mean Hue per Class ) df_hue = pd.DataFrame({ class_1 : data[data[ class ] == 1 ][ Hue ], class_2 : data[data[ class ] == 2 ][ Hue ], class_3 : data[data[ class ] == 3 ][ Hue ]}, columns=[ class_1 , class_2 , class_3 ]) p3 = df_hue.plot_bokeh.hist(title= Distribution perClass: Hue ) df_proline = pd.DataFrame({ class_1 : data[data[ class ] == 1 ][ Proline ], class_2 : data[data[ class ] == 2 ][ Proline ], class_3 : data[data[ class ] == 3 ][ Proline ]}, columns=[ class_1 , class_2 , class_3 ]) p4 =df_proline.plot_bokeh.hist(title= Distribution per Class: Proline ) pandas_bokeh.plot_grid([[p1, p2], [p3, p4]], plot_width=450)
為内置的Pandas繪圖功能添加多個第三方後端,這大大增強了該庫用于資料可視化的能力。從此之後,pandas就可以集美貌與實用于一身啦。
歡迎在留言區留下你的觀點,一起讨論提高。如果今天的文章讓你有新的啟發,歡迎轉發分享給更多人。歡迎加入程式員小樂加群”或者“阿裡、騰訊、百度、華為、京東最新面試題彙集
學習 MySQL 高性能優化原理,這一篇就夠了!
Spring Boot 最最最常用的注解梳理
是什麼讓我放棄了Restful API?
關注訂閱号「程式員小樂」,收看更多精彩内容
嘿,你在看嗎?