99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代【干貨】數(shù)據(jù)可視化很難?不存在的!一文弄懂PyEcharts可視化技術
【干貨】數(shù)據(jù)可視化很難?不存在的!一文弄懂PyEcharts可視化技術
2025-01-24
收藏

俗話說的好“文不如表,表不如圖”,圖的信息傳達效率很高,是數(shù)據(jù)匯報、數(shù)據(jù)展示的重要手段。好的數(shù)據(jù)展示不僅需要有圖,還要選合適的圖、選合適的工具畫圖(例如能交互的圖就比靜態(tài)圖更吸引人)。

圖形的選擇可以參考CDA數(shù)據(jù)分析師認證一級教材中關于圖表與分析場景的對應關系來選擇合適的圖。

本文主要給大家分享一款繪圖工具,可以繪制能交互的圖形,這個工具就是PyEcharts

PyEcharts為啥畫的一手好圖

PyEcharts為啥畫的一手好圖?因為他有個“好爸爸”-Echarts。Echarts是百度開源的,目前托管在Apache軟件基金會。它底層由JavaScripts實現(xiàn),可以流暢的運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器。ECharts 提供了常規(guī)的折線圖柱狀圖、散點圖、餅圖、K線圖,用于統(tǒng)計的盒形圖,用于地理數(shù)據(jù)可視化地圖熱力圖、線圖,用于關系數(shù)據(jù)可視化的關系圖、treemap、旭日圖,多維數(shù)據(jù)可視化的平行坐標,還有用于 BI 的漏斗圖,儀表盤,并且支持圖與圖之間的混搭。

Echarts雖有千般好,but JavaScripts這個前端語言對于大部分數(shù)據(jù)分析師而言是一個屏障,所以有幾位大佬開發(fā)出PyEcharts,這其實是通過Python語言對Echarts做了封裝,會Python的數(shù)據(jù)分析師便能快速上手使用Echarts了。

快速上手PyEcharts

PyEcharts版本迭代比較快,差異較大的是0.5.x 與新的 1.x 、2.x版本之間差異較大。并且官方也不再持續(xù)對0.5.x系列更新迭代了,所以本文采用的是1.x、2.x的寫法演示如何應用PyEcharts進行繪圖。

從簡單的柱形圖開始

導入要繪制的圖形對象的構造函數(shù),常見的圖表幾乎都在charts里面了。

from pyecharts.charts import Bar 
# 這里導入的是柱形圖Bar,還可以是Line折線圖、Pie餅圖等

使用構造函數(shù)初始化圖形對象

bar = Bar()

接下來添加x軸的數(shù)據(jù)

bar.add_xaxis(["2021","2022","2023","2024","2025"])

添加y軸數(shù)據(jù),第一個參數(shù)是系列名稱(例如一張圖可以繪制多組柱狀圖,一個系列就是一個組)

bar.add_yaxis("A組銷售額",y_axis=[1000,3000,2500,4000,3900])
bar.add_yaxis("B組銷售額",y_axis=[2000,3500,3500,3000,3500])

最后通過render或者render_notebook函數(shù)將圖形繪制出來。

bar.render_notebook() 
# 適合在jupyter notebook環(huán)境下直接在cell下面顯示。

如果使用的是render可以將圖形渲染到html(網(wǎng)頁文件)中去,可以傳入指定的文件名。

bar.render("歷年銷售數(shù)據(jù).html")

上面的代碼生成了歷史銷售數(shù)據(jù).html這個網(wǎng)頁文件了。

雙擊打開就可以在瀏覽器看到圖形了。

錦上添花

簡單的繪圖上面的操作就夠了,如果想讓圖形更炫酷,則需要更多的代碼雕琢。如何在PyEcharts里面實現(xiàn)其他額外的功能呢,通過配置項即可。PyEcharts里有一句話叫“一切皆配置”,就是任何需求都由配置來實現(xiàn)。

所有的配置類型都在options模塊下,約定俗成的導入方式如下:

import pyecharts.options as opts

接下來初始化柱狀圖對象時為其做初始化配置(init_opts),在初始化配置中設置一套PyEcharts自帶的主題。

from pyecharts.globals import ThemeType
bar2 = Bar(init_opts=opts.InitOpts(theme=ThemeType.SHINE))

后續(xù)代碼一樣,添加數(shù)據(jù),渲染致jupyter notebook。

bar2.add_xaxis(["2021","2022","2023","2024","2025"])
bar2.add_yaxis("A組銷售額",y_axis=[1000,3000,2500,4000,3900])
bar2.add_yaxis("B組銷售額",y_axis=[2000,3500,3500,3000,3500])
bar2.render_notebook()

看起來與之前的圖還是有很大區(qū)別的,例如配色。PyEcharts還有很多主題可以有不同的視覺效果。

bar3 = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))

以上就是PyEcharts的基本用法,如果你學會了繪制常見的一些圖形完全沒有問題。更多的細節(jié)用法可以關注PyEcharts官方文檔或者我們的系列文章。

抓住機遇,狠狠提升自己

隨著各行各業(yè)進行數(shù)字化轉型,數(shù)據(jù)分析能力已經(jīng)成了職場的剛需能力,這也是這兩年CDA數(shù)據(jù)分析師大火的原因。和領導提建議再說“我感覺”“我覺得”,自己都覺得心虛,如果說“數(shù)據(jù)分析發(fā)現(xiàn)……”,肯定更有說服力。想在職場精進一步還是要學習數(shù)據(jù)分析的,統(tǒng)計學、概率論、商業(yè)模型、SQL,Python還是要會一些,能讓你工作效率提升不少。備考CDA數(shù)據(jù)分析師的過程就是個自我提升的過程。

CDA 考試官方報名入口:https://www.cdaglobal.com/pinggu.html

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }