本文目錄一覽:
python可視化神器——pyecharts庫
無意中從今日頭條中看到的一篇文章,可以生成簡單的圖表。據說一些大數據開發們也是經常用類似的圖表庫,畢竟有現成的,改造下就行,誰會去自己造輪子呢。
pyecharts是什麼?
pyecharts 是一個用於生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒, pyecharts 是為了與 Python 進行對接,方便在 Python 中直接使用數據生成圖 。使用pyecharts可以生成獨立的網頁,也可以在flask、django中集成使用。
安裝很簡單:pip install pyecharts
如需使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可,同時兼容 Python2 和 Python3 的 Jupyter Notebook 環境。所有圖表均可正常顯示,與瀏覽器一致的交互體驗,簡直不要太強大。
參考自pyecharts官方文檔:
首先開始來繪製你的第一個圖表
使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可
add() 主要方法,用於添加圖表的數據和設置各種配置項
render() 默認將會在根目錄下生成一個 render.html 的文件,文件用瀏覽器打開。
使用主題
自 0.5.2+ 起,pyecharts 支持更換主體色系
使用 pyecharts-snapshot 插件
如果想直接將圖片保存為 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用該插件請確保你的系統上已經安裝了 Nodejs 環境。
安裝 phantomjs $ npm install -g phantomjs-prebuilt
安裝 pyecharts-snapshot $ pip install pyecharts-snapshot
調用 render 方法 bar.render(path=’snapshot.png’) 文件結尾可以為 svg/jpeg/png/pdf/gif。請注意,svg 文件需要你在初始化 bar 的時候設置 renderer=’svg’。
圖形繪製過程
基本上所有的圖表類型都是這樣繪製的:
chart_name = Type() 初始化具體類型圖表。
add() 添加數據及配置項。
render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。
add() 數據一般為兩個列表(長度一致)。如果你的數據是字典或者是帶元組的字典。可利用 cast() 方法轉換。
多次顯示圖表
從 v0.4.0+ 開始,pyecharts 重構了渲染的內部邏輯,改善效率。推薦使用以下方式顯示多個圖表。如果使是 Numpy 或者 Pandas,可以參考這個示例
當然你也可以採用更加酷炫的方式,使用 Jupyter Notebook 來展示圖表,matplotlib 有的,pyecharts 也會有的
Note: 從 v0.1.9.2 版本開始,廢棄 render_notebook() 方法,現已採用更加 pythonic 的做法。直接調用本身實例就可以了。
比如這樣
還有這樣
如果使用的是自定義類,直接調用自定義類示例即可
圖表配置
圖形初始化
通用配置項
xyAxis:平面直角坐標系中的 x、y 軸。(Line、Bar、Scatter、EffectScatter、Kline)
dataZoom:dataZoom 組件 用於區域縮放,從而能自由關注細節的數據信息,或者概覽數據整體,或者去除離群點的影響。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
legend:圖例組件。圖例組件展現了不同系列的標記(symbol),顏色和名字。可以通過點擊圖例控制哪些系列不顯示。
label:圖形上的文本標籤,可用於說明圖形的一些數據信息,比如值,名稱等。
lineStyle:帶線圖形的線的風格選項(Line、Polar、Radar、Graph、Parallel)
grid3D:3D笛卡爾坐標系組配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)
axis3D:3D 笛卡爾坐標系 X,Y,Z 軸配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)
visualMap:是視覺映射組件,用於進行『視覺編碼』,也就是將數據映射到視覺元素(視覺通道)
markLinemarkPoint:圖形標記組件,用於標記指定的特殊數據,有標記線和標記點兩種。(Bar、Line、Kline)
tooltip:提示框組件,用於移動或點擊鼠標時彈出數據內容
toolbox:右側實用工具箱
圖表詳細
Bar(柱狀圖/條形圖)
Bar3D(3D 柱狀圖)
Boxplot(箱形圖)
EffectScatter(帶有漣漪特效動畫的散點圖)
Funnel(漏斗圖)
Gauge(儀錶盤)
Geo(地理坐標系)
GeoLines(地理坐標系線圖)
Graph(關係圖)
HeatMap(熱力圖)
Kline/Candlestick(K線圖)
Line(折線/面積圖)
Line3D(3D 折線圖)
Liquid(水球圖)
Map(地圖)
Parallel(平行坐標系)
Pie(餅圖)
Polar(極坐標系)
Radar(雷達圖)
Sankey(桑基圖)
Scatter(散點圖)
Scatter3D(3D 散點圖)
ThemeRiver(主題河流圖)
TreeMap(矩形樹圖)
WordCloud(詞雲圖)
用戶自定義
Grid 類:並行顯示多張圖
Overlap 類:結合不同類型圖表疊加畫在同張圖上
Page 類:同一網頁按順序展示多圖
Timeline 類:提供時間線輪播多張圖
統一風格
註:pyecharts v0.3.2以後,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表,可自行安裝對應的地圖文件包。
地圖文件被分成了三個 Python 包,分別為:
全球國家地圖:
echarts-countries-pypkg
中國省級地圖:
echarts-china-provinces-pypkg
中國市級地圖:
echarts-china-cities-pypkg
直接使用python的pip安裝
但是這裡大家一定要注意,安裝完地圖包以後一定要重啟jupyter notebook,不然是無法顯示地圖的。
顯示如下:
總得來說,這是一個非常強大的可視化庫,既可以集成在flask、Django開發中,也可以在做數據分析的時候單獨使用,實在是居家旅行的必備神器啊
Python 中的可視化工具介紹
幾周前,R語言社區經歷了一場關於畫圖工具的討論。對於我們這種外人來說,具體的細節並不重要,但是我們可以將一些有用的觀點運用到 Python 中。討論的重點是 R 語言自帶的繪圖工具 base R 和 Hadley Wickham 開發的繪圖工具 ggplot2 之間的優劣情況。如果你想了解更多細節內容,請閱讀以下幾篇文章:
其中最重要的兩個內容是:
不是所有人都認同第二個觀點,ggplot2確實無法繪製出所有的圖表類型,但是我會利用它來做分析。
以下是 2016 年 4 月寫的關於繪圖工具的概述。出於多方面的原因,繪圖工具的選取更多地取決於個人偏好,因此本文介紹的 Python 繪圖工具也僅代表我的個人使用偏好。
Matplotlib 是一個強大的工具,它是 Pandas’ builtin-plotting 和 Seaborn 的基礎。 Matplotlib 能夠繪製許多不同的圖形,還能調用多個級別的許多 API 。我發現 pyplot api 非常好用,你可能用不上 Transforms 或者 artists ,但是如果你有需求的話可以查閱幫助文檔。我將從 pandas 和 seaborn 圖開始介紹,然後介紹如何調用 pyplot 的 API 。
DataFrame 和 Series 擁有 .plot 的命名空間,其中有許多圖形類別可供選擇(line, hist, scatter, 等等)。 Pandas 對象還提供了額外的用於增強圖形展現效果的數據,如索引變量。
由於 pandas 具有更少的向後兼容的限制,所以它具有更好的美學特性。從這方面來說,我認為 pandas 中的 DataFrame.plot 是一個非常實用的快速探索性分析的工具。
Michael Waskom 所開發的 Seaborn 提供了一個高層次的界面來繪製更吸引人統計圖形。 Seaborn 提供了一個可以快速探索分析數據不同特徵的 API 接口,接下來我們將重點介紹它。
Bokeh 是一款針對瀏覽器開發的可視化工具。
和 matplotlib 一樣,**Bokeh
** 擁有一系列 API 接口。比如 glpyhs 接口,該接口和 matplotllib 中的 Artists 接口非常相似,它主要用於繪製環形圖、方形圖和多邊形圖等。最近 Bokeh 又開放了一個新的圖形接口,該接口主要用於處理詞典數據或 DataFrame 數據,並用於繪製罐頭圖。
以下是一些本文沒有提到的可視化工具:
我們將利用 ggplot2 中的 diamonds 數據集,你可以在 Vincent Arelbundock’s RDatasets 中找到它(pd.read_csv(‘ ‘) ),此外我們還需要檢測是否已經安裝 feather 。
[站外圖片上傳中……(4)]
Bokeh 提供了兩個 API,一個是低級的 glyph API,另一個是高級的 Charts API。
[站外圖片上傳中……(5)]
還不是很清楚我們應該在啥時候利用 Bokeh 來進行探索性分析,不過它的交互式功能可以激發我的興趣。就個人而言,由於習慣問題我平時仍然一直使用 matplotlib 來繪圖,我還無法完全切換到 Bokeh 中。
我非常喜歡 Bokeh 的儀錶盤功能和 bokeh server 的 webapps。
[站外圖片上傳中……(6)]
[站外圖片上傳中……(7)]
[站外圖片上傳中……(8)]
matplotlib 並不局限於處理 DataFrame 數據,它支持所有使用 getitem 作為鍵值的數據類型。
[站外圖片上傳中……(9)]
[站外圖片上傳中……(10)]
我們從列變量的名字中提取出軸標籤,利用 Pandas 可以更加便捷地繪製一系列共享 x 軸數據的圖形。
[站外圖片上傳中……(11)]
[站外圖片上傳中……(12)]
本文中的剩餘部分將重點介紹 seaborn和為什麼我認為它是探索性分析的強大工具。
我強烈建議你閱讀 Seaborn 的 introductory notes,這上面介紹了 seaborn 的設計邏輯和應用領域。
我們可以通過一個穩定的且易懂的 API 接口來調用 Seaborn。
事實上,seaborn 是基於 matplotlib 開發的,這意味着如果你熟悉 pyplot API的話,那麼你可以很容易地掌握 seaborn。
大多數 seaborn 繪圖函數的參數都由 x, y, hue, 和 data 構成(並不是所有的參數都是必須的)。如果你處理的對象是 DataFrame,那麼你可以直接將列變量的名稱和數據集的名稱一同傳遞到繪圖函數中。
[站外圖片上傳中……(13)]
[站外圖片上傳中……(14)]
[站外圖片上傳中……(15)]
[站外圖片上傳中……(16)]
我們可以很輕易地探究兩個變量之間的關係:
[站外圖片上傳中……(17)]
[站外圖片上傳中……(18)]
或者一次探究多個變量之間的關係:
[站外圖片上傳中……(19)]
[站外圖片上傳中……(20)]
pariplot 是 PairGrid 的一個包裝函數,它提供了 seaborn 一個重要的抽象功能——Grid。Seaborn 的 Grid 將 matplotlib 中Figure 和數據集中的變量聯繫起來了。
我們有兩種方式可以和 grids 進行交互操作。其一,seaborn 提供了類似於 pairplot 的包裝函數,它提前設置了許多常見任務的參數;其二,如果你需要更多的自定義選項,那麼你可以直接利用 Grid 方法。
[站外圖片上傳中……(21)]
[站外圖片上傳中……(22)]
[站外圖片上傳中……(23)]
34312 rows × 7 columns
[站外圖片上傳中……(24)]
[站外圖片上傳中……(25)]
FaceGrid 可以通過控制分面變量來生成 Grid圖形,其中PairGrid是它的一個特例。接下來的案例中,我們將以數據集中的 cut 變量為分面變量來繪製圖像:
[站外圖片上傳中……(26)]
[站外圖片上傳中……(27)]
最後一個案例展示了如何將 seaborn 和 matplotlib 結合起來。g.axes是matplotlib.Axes的一個數組,g.fig是matplotlib.Figure的一個特例。這是使用 seaborn 時常見的一個模式:利用 seaborn 的方法來繪製圖像,然後再利用 matplotlib 來調整細節部分。
我認為 seaborn 之所以吸引人是因為它的繪圖語法具有很強的靈活性。你不會被作者所設定的圖表類型所局限住,你可以根據自己的需要創建新的圖表。
[站外圖片上傳中……(28)]
[站外圖片上傳中……(29)]
[站外圖片上傳中……(30)]
[站外圖片上傳中……(31)]
本來,我打算準備更多的例子來介紹 seaborn,但是我會將相關鏈接分享給大家。Seaborn 的說明文檔寫的非常詳細。
最後,我們將結合 scikit-learn 來介紹如何利用 GridSearch 來尋找最佳參數。
[站外圖片上傳中……(32)]
[站外圖片上傳中……(33)]
[站外圖片上傳中……(34)]
原文鏈接:
譯者:Fibears
Python數據分析:可視化
本文是《數據蛙三個月強化課》的第二篇總結教程,如果想要了解 數據蛙社群 ,可以閱讀 給DataFrog社群同學的學習建議 。溫馨提示:如果您已經熟悉python可視化內容,大可不必再看這篇文章,或是之挑選部分文章
對於我們數據分析師來說,不僅要自己明白數據背後的含義,而且還要給老闆更直觀的展示數據的意義。所以,對於這項不可缺少的技能,讓我們來一起學習下吧。
畫圖之前,我們先導入包和生成數據集
我們先看下所用的數據集
折線圖是我們觀察趨勢常用的圖形,可以看出數據隨着某個變量的變化趨勢,默認情況下參數 kind=”line” 表示圖的類型為折線圖。
對於分類數據這種離散數據,需要查看數據是如何在各個類別之間分布的,這時候就可以使用柱狀圖。我們為每個類別畫出一個柱子。此時,可以將參數 kind 設置為 bar 。
條形圖就是將豎直的柱狀圖翻轉90度得到的圖形。與柱狀圖一樣,條形圖也可以有一組或多種多組數據。
水平條形圖在類別名稱很長的時候非常方便,因為文字是從左到右書寫的,與大多數用戶的閱讀順序一致,這使得我們的圖形容易閱讀。而柱狀圖在類別名稱很長的時候是沒有辦法很好的展示的。
直方圖是柱形圖的特殊形式,當我們想要看數據集的分布情況時,選擇直方圖。直方圖的變量劃分至不同的範圍,然後在不同的範圍中統計計數。在直方圖中,柱子之間的連續的,連續的柱子暗示數值上的連續。
箱線圖用來展示數據集的描述統計信息,也就是[四分位數],線的上下兩端表示某組數據的最大值和最小值。箱子的上下兩端表示這組數據中排在前25%位置和75%位置的數值。箱中間的橫線表示中位數。此時可以將參數 kind 設置為 box。
如果想要畫出散點圖,可以將參數 kind 設置為 scatter,同時需要指定 x 和 y。通過散點圖可以探索變量之間的關係。
餅圖是用面積表示一組數據的佔比,此時可以將參數 kind 設置為 pie。
我們剛開始學習的同學,最基本應該明白什麼數據應該用什麼圖形來展示,同學們來一起總結吧。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240099.html