亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PyEcharts的數(shù)據(jù)可視化

        2022-03-19 00:38:35張玉葉
        電腦知識(shí)與技術(shù) 2022年2期
        關(guān)鍵詞:數(shù)據(jù)可視化圖表

        張玉葉

        摘要:圖表的應(yīng)用不但可使得數(shù)據(jù)的顯示更加清晰、直觀,而且可大大增強(qiáng)Web頁(yè)面的功能和顯示效果。針對(duì)目前大數(shù)據(jù)時(shí)代背景下如何將數(shù)據(jù)進(jìn)行合理有效的可視化展示,從而快速獲取數(shù)據(jù)中所包含的關(guān)鍵信息這一廣泛需求,文章通過對(duì)一商品銷售數(shù)據(jù)分析介紹了如何利用Python的第三方擴(kuò)展庫(kù)PyEcharts來(lái)對(duì)數(shù)據(jù)進(jìn)行合理有效的可視化展示,給出了具體實(shí)現(xiàn)方法和代碼。

        關(guān)鍵詞:數(shù)據(jù)可視化;PyEcharts;Python;圖表

        中圖分類號(hào):TP311.1 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1009-3044(2022)02-0024-04

        在信息時(shí)代飛速發(fā)展的今天,每天都在產(chǎn)生海量數(shù)據(jù),如何從這些海量數(shù)據(jù)中快速發(fā)現(xiàn)和獲取有用信息,最常用的方法就是數(shù)據(jù)的可視化。數(shù)據(jù)可視化是傳達(dá)數(shù)據(jù)分析結(jié)果的重要環(huán)節(jié),是對(duì)所獲取信息、知識(shí)、模式的圖形化展現(xiàn),其核心目的是清晰、美觀、有效地傳達(dá)與溝通信息[1]。數(shù)據(jù)可視化的方案有很多,可根據(jù)實(shí)際使用場(chǎng)景來(lái)選擇。本文使用的是Python的第三方擴(kuò)展庫(kù)PyEcharts。PyEcharts 是一個(gè)用于生成 Echarts 圖表的JS類庫(kù),Echarts 是百度開源的一個(gè)數(shù)據(jù)可視化工具包。利用PyEcharts,通過編寫少量代碼就可方便快捷地生成Echarts風(fēng)格的各種圖表,是大數(shù)據(jù)時(shí)代進(jìn)行數(shù)據(jù)可視化的常用方案[2]。

        本文通過餅圖、柱狀圖、玫瑰圖等不同形式圖表多角度地解讀示例數(shù)據(jù),通過此例來(lái)展示如何將數(shù)據(jù)合理有效地可視化,從而快速獲取我們所需要的關(guān)鍵信息。

        1 數(shù)據(jù)集

        在此以一個(gè)商品在全國(guó)各地的銷量及損壞量的數(shù)據(jù)集作為示例數(shù)據(jù),要分析的數(shù)據(jù)集中部分?jǐn)?shù)據(jù)如表1所示(在此只顯示了整個(gè)數(shù)據(jù)集中的前10行數(shù)據(jù))。

        表1中各字段含義:date(銷售日期)、sales(商品銷量)、destroy(商品損壞量)、area(銷售地區(qū))。

        2 開發(fā)環(huán)境

        本文示例所采用的開發(fā)工具及相應(yīng)擴(kuò)展庫(kù)的版本:Python3.6、Pandas1.0.3、PyEcharts1.7.1。所有代碼在Jupyter notebook中實(shí)現(xiàn)。

        要在Python中使用PyEcharts,首先需要安裝PyEcharts,使用命令pip install pyecharts進(jìn)行PyEcharts庫(kù)的安裝[3] 。

        3 數(shù)據(jù)可視化

        使用PyEcharts繪制圖表的大體過程可分為以下步驟:

        1)導(dǎo)入相應(yīng)的包;

        2)準(zhǔn)備繪制圖表所需要的數(shù)據(jù);

        3)生成圖表;

        4)對(duì)圖表進(jìn)行相應(yīng)的設(shè)置;

        5)渲染圖片。

        3.1 各大區(qū)銷量分布情況

        假設(shè)要想查看商品在全國(guó)各大區(qū)的銷量分布占比情況,可采用餅圖來(lái)展示。具體繪制過程如下:

        1)導(dǎo)入相應(yīng)的包

        利用PyEcharts繪制餅圖,需要導(dǎo)入兩個(gè)包,一個(gè)是用于繪制餅圖的Pie包,另一個(gè)是用于進(jìn)行系列配置和全局配置的options包。

        對(duì)應(yīng)代碼如下:

        from pyecharts.charts import Pie ? ? ?# 用于繪制餅圖的Pie包

        from pyecharts import options as opts ?# 用于進(jìn)行設(shè)置的options包

        2)準(zhǔn)備繪制圖表所需要的數(shù)據(jù)

        繪制餅圖需要的數(shù)據(jù)是類似[[‘華東,3000],[‘華北,2800]]這種形式的數(shù)據(jù),要顯示商品在各大區(qū)的銷售分布情況,因此需要各大區(qū)及其所對(duì)應(yīng)的商品銷售總量。數(shù)據(jù)集中給出的是每天不同地區(qū)的銷售量,因此需要先將地區(qū)轉(zhuǎn)換成所屬的大區(qū),然后按大區(qū)對(duì)商品銷量進(jìn)行分組匯總,即可得到各大區(qū)的商品總銷量。

        首先定義一個(gè)將地區(qū)轉(zhuǎn)換成大區(qū)的函數(shù),代碼如圖1所示。

        然后讀取數(shù)據(jù)集,對(duì)數(shù)據(jù)集進(jìn)行相應(yīng)的處理,分組統(tǒng)計(jì)各大區(qū)的銷量,將統(tǒng)計(jì)結(jié)果轉(zhuǎn)換成繪制餅圖所需要的數(shù)據(jù)格式,代碼如下:

        data = pd.read_csv('data/商品銷售情況表.csv') ? ? ? ?# 讀取數(shù)據(jù)集

        data['zone'] = data['area'].apply(zone) ? ? ? ? ? ? ? ?# 將地區(qū)轉(zhuǎn)換成大區(qū)

        grp_data = data.groupby('zone')['sales'].sum() ? ? ? ? ?# 分組匯總

        pie_data = [[i,v] for i,v in zip(grp_data.index,grp_data)] ?# 數(shù)據(jù)格式轉(zhuǎn)換

        3)生成圖表

        首先調(diào)用Pie()方法生成一個(gè)餅圖對(duì)象,然后調(diào)用其add()方法添加數(shù)據(jù)。

        PyEcharts支持鏈?zhǔn)秸{(diào)用,因此兩個(gè)方法可連續(xù)書寫,對(duì)應(yīng)代碼如下:

        pie_ ?= ?Pie().add('',pie_data)

        4)圖表設(shè)置

        圖表設(shè)置通常包括系列設(shè)置和全局設(shè)置。

        系列設(shè)置中最常用的是餅圖上是否要顯示數(shù)據(jù)標(biāo)簽,默認(rèn)設(shè)置為不顯示,如果要想顯示,可通過如下代碼進(jìn)行設(shè)置:

        pie_.set_series_opts(label_opts = opts.LabelOpts(formatter = ':b5x5bvl%'))

        全局設(shè)置中通常需要設(shè)置的是圖表的標(biāo)題。設(shè)置代碼如下:

        pie_.set_global_opts(title_opts = opts.TitleOpts(title = '各大區(qū)銷量分布情況'))

        5)渲染圖片

        生成的圖片可直接放到HTML文件中,也可直接在notebook中顯示。

        如要將圖片放到HTML文件中,可使用代碼:

        pie_.render('各大區(qū)商品銷量分布情況.html')

        如要直接在notebook中顯示圖片,則使用如下代碼:

        pie_.render_notebook()

        全國(guó)各大區(qū)商品銷量分布餅圖繪制完整代碼如圖2所示:

        運(yùn)行上述代碼,會(huì)生成相應(yīng)的HTML文件“各大區(qū)商品銷量分布情況.html”,用瀏覽器打開該HTML文件,結(jié)果如圖3所示。

        當(dāng)鼠標(biāo)停留在餅圖的某部分上時(shí),會(huì)突出顯示此部分,并顯示相應(yīng)的銷量信息,效果如圖4所示。

        通過餅圖,可清晰地看到商品在不同大區(qū)的銷量分布占比情況,同時(shí)也可方便快速地查看指定大區(qū)的銷量情況。

        上面繪制的是商品在不同大區(qū)的總銷售量,用同樣方法也可繪制商品在不同大區(qū)的損壞數(shù)量等,只需要將所需數(shù)據(jù)源替換一下即可。類似這種需要分布占比情況數(shù)據(jù)的可視化,用餅圖都是一個(gè)不錯(cuò)的選擇,所以餅圖通常用于展示各部分的占比情況。

        3.2 商品銷量前10的地區(qū)

        想要查看商品在哪些地區(qū)的銷量最好,可采用柱狀圖來(lái)展示。在此顯示銷量最高的前10個(gè)地區(qū)。

        1)導(dǎo)入相應(yīng)的包

        from pyecharts.charts import Bar

        from pyecharts import options as opts

        2)準(zhǔn)備繪制圖表所需要的數(shù)據(jù)

        要想獲取商品銷量前10的地區(qū),需將數(shù)據(jù)集先按地區(qū)分組統(tǒng)計(jì)總銷量,然后按總銷量降序排列,最后取其前10個(gè)即可,對(duì)應(yīng)代碼如下:

        data = pd.read_csv('data/商品銷售情況表.csv') ? ? ? ? ? ? ? ? # 讀取數(shù)據(jù)集

        area_data = data.groupby(by='area',as_index=False).sum() ? ? ? ?# 按地區(qū)分組匯總

        bar_data = area_data.sort_values(by='sales',ascending=False)[:10] ?# 銷量前10地區(qū)

        3)繪制相應(yīng)的柱狀圖及設(shè)置相應(yīng)的配置

        柱狀圖的繪制相對(duì)比較簡(jiǎn)單,只需分別指定X軸和Y軸的數(shù)據(jù),配置項(xiàng)通常只需設(shè)置圖表標(biāo)題,在此將圖表繪制及配置項(xiàng)設(shè)置直接采用鏈?zhǔn)綄懛?,相?yīng)代碼如下:

        bar = (

        Bar()

        .add_xaxis(bar_data['area'].tolist()) ? ? # x軸為地區(qū)名稱

        .add_yaxis('', bar_data['sales'].tolist()) ? # y軸為商品銷量

        .set_global_opts(title_opts=opts.TitleOpts(title= '商品銷量前10地區(qū)') #設(shè)置標(biāo)題

        4)渲染圖片

        在此直接利用代碼:bar.render_notebook()在notebook中渲染圖片。

        完整的代碼如圖5所示。

        運(yùn)行上述代碼,結(jié)果如圖6所示。

        3.3 商品損壞量前10地區(qū)

        商品在運(yùn)輸或儲(chǔ)存過程中會(huì)有相應(yīng)的損壞,數(shù)據(jù)集中存放有商品在不同地區(qū)的損壞量。如果要想查看各大區(qū)的商品損壞量,可以利用前面介紹的餅圖來(lái)展示;如果要查看商品損壞量前10地區(qū),可以利用柱狀圖來(lái)要展示。如果是除了想查看商品損壞量最高的前10地區(qū)外,還想看看各地區(qū)商品損壞量在這10個(gè)地區(qū)中商品總損壞量中的占比情況,這時(shí)更好的可視化圖表是南丁格爾玫瑰圖。南丁格爾玫瑰圖實(shí)際上就是一種特殊的餅圖。

        1)導(dǎo)入相應(yīng)的包

        from pyecharts.charts import Pie

        from pyecharts import options as opts

        2)準(zhǔn)備繪制圖表所需要的數(shù)據(jù)

        要想獲取商品損壞量前10的地區(qū),需將數(shù)據(jù)集先按地區(qū)分組統(tǒng)計(jì)各地區(qū)商品損壞總量,然后按商品損壞總量降序排列,最后取前10個(gè)即可,對(duì)應(yīng)代碼如下:

        data = pd.read_csv('data/商品銷售情況表.csv') ? ? ? ? ? ? # 讀取數(shù)據(jù)集

        area_data = data.groupby(by='area',as_index=False).sum() ? ?# 按地區(qū)分組匯總

        destroy_data = area_data[['area','destroy']].sort_values(by='destroy',ascending=False).values[:10]

        3)繪制圖表

        繪制南丁格爾玫瑰圖時(shí)除了設(shè)置普通餅圖所需要的系列名稱和數(shù)據(jù)外,通常還需要設(shè)置內(nèi)外半徑和圓心位置及玫瑰圖的模式。玫瑰圖有兩種模式:radius和area。radius模式是通過半徑區(qū)分?jǐn)?shù)值大小,角度大小表示占比。area模式是角度都相同,通過面積而表示數(shù)值大小??筛鶕?jù)情況自行選擇,在此采用area模式,對(duì)應(yīng)代碼如下:

        pie = Pie().add(series_name = "商品損壞數(shù)量", ? # 系列名稱

        data_pair = destroy_data, ? ? ? ? # 數(shù)據(jù)

        radius = ["20%", "80%"], ? ? ? ? # 設(shè)置內(nèi)半徑和外半徑

        center = ["60%", "60%"], ? ? ? ? # 設(shè)置圓心位置

        rosetype = "area" ? ? ? ? ? ? ? ?# 玫瑰圖模式

        4)配置項(xiàng)設(shè)置

        將圖表中的標(biāo)簽文字形式設(shè)為:“地區(qū):占比(%)”的形式,通過設(shè)置系列配置項(xiàng)來(lái)完成,代碼如下:

        pie.set_series_opts(label_opts = opts.LabelOpts(formatter=" : 5bxv5dh%"))

        然后設(shè)置圖表標(biāo)題及位置、圖例及位置,通過全局配置項(xiàng)來(lái)完成,代碼如下:

        pie.set_global_opts(title_opts = opts.TitleOpts(title="商品損壞量前10地區(qū)",

        pos_right = '40%'),

        legend_opts = opts.LegendOpts( orient='vertical',

        pos_right="85%",

        pos_top="15%")

        5)渲染圖片

        在此直接利用代碼:pie.render_notebook()在notebook中渲染圖片。

        完整的代碼如圖7所示。

        運(yùn)行上述代碼,結(jié)果如圖8所示。

        將鼠標(biāo)移動(dòng)到某部分上,可顯示其對(duì)應(yīng)的具體數(shù)據(jù),效果如圖9所示。

        4 結(jié)束語(yǔ)

        通常,使用自然語(yǔ)言、數(shù)字等形式表達(dá)的概念是枯燥的、不易懂的,而可視化的技術(shù)可增加數(shù)據(jù)的生動(dòng)性[4],因而人類通過視覺獲取數(shù)據(jù)比任何其他形式的獲取方式更好[5]。圖表的應(yīng)用不但可使得數(shù)據(jù)的顯示更加清晰、直觀,而且大大增強(qiáng)了Web頁(yè)面的功能和顯示效果。本文介紹的利用Python的第三方擴(kuò)展庫(kù)PyEcharts繪制圖表的方法,其實(shí)現(xiàn)簡(jiǎn)單方便,在目前大數(shù)據(jù)時(shí)代背景下有著廣泛的應(yīng)用領(lǐng)域和良好的使用前景。讀者可參考其實(shí)現(xiàn)思路稍微改動(dòng)一下即可實(shí)現(xiàn)更多類似的數(shù)據(jù)可視化效果,從而提高數(shù)據(jù)可視化處理能力。

        參考文獻(xiàn):

        [1] 張延松,徐新哲.數(shù)據(jù)分析與數(shù)據(jù)可視化實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2020.

        [2] 零一.Python 3爬蟲、數(shù)據(jù)清洗與可視化實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2018.

        [3] 董付國(guó).Python數(shù)據(jù)分析、挖掘與可視化[M].北京:人民郵電出版社,2019.

        [4] 吳振宇,李春忠,李建鋒.Phthon數(shù)據(jù)處理與挖掘[M].北京:人民郵電出版社,2020.

        [5] 柳毅.Python數(shù)據(jù)分析與實(shí)踐[M].北京:清華大學(xué)出版社,2019.

        【通聯(lián)編輯:謝媛媛】

        猜你喜歡
        數(shù)據(jù)可視化圖表
        大數(shù)據(jù)時(shí)代背景下本科教學(xué)質(zhì)量動(dòng)態(tài)監(jiān)控系統(tǒng)的構(gòu)建
        可視化:新媒體語(yǔ)境下的數(shù)據(jù)、敘事與設(shè)計(jì)研究
        我國(guó)數(shù)據(jù)新聞的發(fā)展困境與策略研究
        科技傳播(2016年19期)2016-12-27 14:53:29
        基于R語(yǔ)言的大數(shù)據(jù)審計(jì)方法研究
        雙周圖表
        足球周刊(2016年14期)2016-11-02 10:54:56
        雙周圖表
        足球周刊(2016年15期)2016-11-02 10:54:16
        雙周圖表
        足球周刊(2016年10期)2016-10-08 18:30:55
        圖表
        世界博覽(2016年16期)2016-09-27 18:25:26
        麻豆久久久9性大片| 日韩精品资源在线观看免费| 无码制服丝袜中文字幕| 色噜噜亚洲男人的天堂| 亚洲av中文aⅴ无码av不卡| 毛片a级毛片免费观看| 香蕉视频免费在线| 男女上下猛烈啪啪免费看| 日本一区二区三区亚洲| 精品国产AⅤ一区二区三区4区 | 亚洲欧美变态另类综合| 国产精品爽黄69天堂a| 国产精品一区av在线| 日本一区二区久久精品亚洲中文无| 无人高清电视剧在线观看| 日本午夜理论片在线观看| 亚洲色欲色欲www成人网| 亚洲狠狠网站色噜噜| 天堂中文最新版在线中文| 一道之本加勒比热东京| 日韩精品欧美激情国产一区| 韩国精品一区二区三区无码视频 | 色欲国产精品一区成人精品| 巨大巨粗巨长 黑人长吊| 亚洲精品一区二区在线免费观看| av无码一区二区三| 四虎成人精品无码永久在线| 久久久亚洲av成人网站 | 女人扒开屁股爽桶30分钟| 国产精品一区二区av麻豆| 国产极品大奶在线视频| 少妇一级内射精品免费| 特级毛片全部免费播放a一级| 99成人精品| 国产人澡人澡澡澡人碰视频| 亚洲欧洲精品无码av| 少妇做爰免费视频了| 欧洲美熟女乱av亚洲一区| 人日本中文字幕免费精品| 亚洲成a∨人片在无码2023| 国产福利一区二区三区在线视频|