0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何制作數(shù)據(jù)可視化大屏

Linux愛好者 ? 來(lái)源:數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美 ? 作者:黃偉呢 ? 2021-10-12 16:31 ? 次閱讀

經(jīng)常有小伙伴問,如何制作數(shù)據(jù)可視化大屏?

今天將手把手帶你爬取奧運(yùn)會(huì)相關(guān)信息,并利用可視化大屏為你展示奧運(yùn)詳情。讓一個(gè)沒關(guān)注過奧運(yùn)會(huì)的朋友,也能夠秒懂奧運(yùn)會(huì)。

1、項(xiàng)目背景

奧運(yùn)會(huì)剛剛過去,你是否已經(jīng)看過2020東京奧運(yùn)會(huì)呢?

2、奧運(yùn)會(huì)相關(guān)信息爬取

  • 爬取字段: 國(guó)家、國(guó)家ID、排名、金牌數(shù)、銀牌數(shù)、銅牌數(shù)、獎(jiǎng)牌總數(shù)、項(xiàng)目名、運(yùn)動(dòng)員、獲獎(jiǎng)?lì)愋?、獲獎(jiǎng)時(shí)間;
  • 爬取說明: 基于兩個(gè)接口的數(shù)據(jù)爬取【json格式的數(shù)據(jù)】,直接采用鍵值對(duì)的方式獲取相關(guān)數(shù)據(jù);
  • 使用工具: Pandas+requests

本文是基于兩個(gè)接口的數(shù)據(jù)爬取,相對(duì)容易的多。

#這個(gè)鏈接主要展示:各國(guó)的金銀銅牌及其總數(shù)!
https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609

#這個(gè)鏈接主要展示:每個(gè)參賽隊(duì)員的參賽項(xiàng)目和獲得的獎(jiǎng)牌情況!
https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609

① 導(dǎo)入相關(guān)庫(kù)

importrequests
importpandasaspd
frompprintimportpprint

requests庫(kù)用于發(fā)起網(wǎng)頁(yè)請(qǐng)求,獲取網(wǎng)頁(yè)中的源代碼;

pandas庫(kù)用于存儲(chǔ)和讀取獲取到的信息;

pprint庫(kù)是漂亮的打印,對(duì)于json格式的數(shù)據(jù),能夠很好的展示結(jié)構(gòu),方便我們解析;

② 爬蟲講解

url='https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609'
data=requests.get(url).json()
pprint(data)

三行代碼就可以獲取到網(wǎng)頁(yè)的源代碼,利用pprint庫(kù),可以清晰的展示json結(jié)構(gòu),對(duì)于我們解析數(shù)據(jù)很有幫助。

我們要的數(shù)據(jù),都存在于body鍵下面的allMedalData鍵中,allMedalData鍵的值是一個(gè)列表,里面有很多字典組成的鍵值對(duì)信息,就是我們要爬取的數(shù)據(jù)。

直接利用鍵獲取對(duì)應(yīng)的值信息,代碼如下:

df1=pd.DataFrame()
forinfoindata1['body']['allMedalData']:
name=info['countryName']
name_id=info['countryId']
rank=info['rank']
gold=info['goldMedalNum']
silver=info['silverMedalNum']
bronze=info['bronzeMedalNum']
total=info['totalMedalNum']
#組織數(shù)據(jù)
orangized_data=[[name,name_id,rank,gold,silver,bronze,total]]
#然后追加df
df1=df1.append(orangized_data)
df1.columns=['名稱','ID','排名','金牌','銀牌','銅牌','獎(jiǎng)牌總數(shù)']
df1

對(duì)于另外一個(gè)網(wǎng)頁(yè),我們采取同樣的方式。

url='https://app-sc.miguvideo.com/vms-livedata/olympic-medal/detail-total/15/110000004609'
data2=requests.get(url).json()
pprint(data2)

是不是此時(shí)感覺結(jié)構(gòu)更清楚了?

df2=pd.DataFrame()
forinfoindata2['body']['medalTableDetail']:
english_name=info['countryName']
name_id=info['countryId']
award_time=info['awardTime']
item_name=info['bigItemName']
sports_name=info['sportsName']
medal_type=info['medalType']
#組織數(shù)據(jù)
orangized_data=[[english_name,name_id,award_time,item_name,sports_name,medal_type]]
#然后追加df
df2=df2.append(orangized_data)
df2.columns=['英文縮寫','ID','獲獎(jiǎng)時(shí)間','項(xiàng)目名','運(yùn)動(dòng)員','金牌類型']
df2

3、數(shù)據(jù)預(yù)處理

對(duì)于爬取到的數(shù)據(jù),往往是有問題的,我們需要提前預(yù)處理一下,方便后續(xù)做可視化展示。

① 數(shù)據(jù)拼接

對(duì)我們共有三個(gè)表格,分別存儲(chǔ)著不同的信息。我們需要對(duì)其進(jìn)行合適的拼接,方便最后可視化。

表格df1表示各國(guó)獎(jiǎng)牌數(shù),數(shù)據(jù)是這樣的:

表格df3表示國(guó)家名中英文對(duì)照表,數(shù)據(jù)是這樣的:

利用上述兩張表,我們可以左連接,將英文名稱添加到df1表上。

df4=pd.merge(df1,df3,on="名稱",how="left")
df4.head(10)

最終效果如下:

表格df5表示運(yùn)動(dòng)項(xiàng)目獲獎(jiǎng)詳情,數(shù)據(jù)是這樣的:

此時(shí),我們又可以將df4和df5做一個(gè)左連接,將這兩張表合成一張大表,就可以得到不同國(guó)家不同項(xiàng)目獲得的獎(jiǎng)牌數(shù)。

df6=pd.merge(df4,df5,on="名稱",how="left")
df6.head(10)

② 關(guān)于金牌類型的說明

上面得到的表df6,其實(shí)還不是最后的表,因?yàn)樯鲜霰碇薪鹋祁愋褪菙?shù)字1、2、3,但是我們需要的是金牌、銀牌、銅牌。因此,我們自己再定義一個(gè)df7。

x={"獲獎(jiǎng)名次":["金牌","銀牌","銅牌"],"金牌類型":[1,2,3]}
df7=pd.DataFrame(x)
df7

效果如下:

af30f8e0-2ac9-11ec-82a8-dac502259ad0.png

因此,我們拿df6與自己構(gòu)造得到的df7再做一個(gè)左連接,就可以的到最后完整的表了。

df8=pd.merge(df6,df7,on="名稱",how="left")
df8.head(10)

③ 中英文名映射轉(zhuǎn)換

由于使用pyecharts繪制世界地圖時(shí),名稱必須是英文的,所以我們需要將這里的中文名稱映射為英文名稱。于是我在網(wǎng)上找到了下面這個(gè)文件:

afec523e-2ac9-11ec-82a8-dac502259ad0.png

我們要做的就是將它與表格中的數(shù)據(jù),做個(gè)映射轉(zhuǎn)換。先把它轉(zhuǎn)換為一個(gè)Excel文件吧,方便我們以后直接使用。

withopen("國(guó)家名中英文對(duì)照表.txt","r",encoding="utf-8")asf:
x=f.read()

df3=pd.DataFrame()
foriinx.split("
"):
x=i.split(":")[0].strip()
y=i.split(":")[1].strip()
orangined_data=[[x,y]]
df3=df3.append(orangined_data)
df3.columns=["名稱","英文名稱"]
df3.to_excel("國(guó)家名中英文對(duì)照表.xlsx",index=None)

然后,在和上述的df2表格做一個(gè)左連接即可。

df4=pd.merge(df2,df3,on="名稱",how="left")
df4

結(jié)果如下:

adedc3a0-2ac9-11ec-82a8-dac502259ad0.png

4、可視化展示

關(guān)于可視化部分,使用的是pyecharts庫(kù)。這部分一共分以下8個(gè)主題:

  • ① 2020東京奧運(yùn)會(huì)各國(guó)獎(jiǎng)牌分布圖;
  • ② 2020東京奧運(yùn)會(huì)獎(jiǎng)牌榜詳情;
  • ③ 2020東京奧運(yùn)會(huì)獎(jiǎng)牌榜總數(shù)前十名;
  • ④ 2020東京奧運(yùn)會(huì)金牌榜總數(shù)前十名;
  • ⑤ 2020東京奧運(yùn)會(huì)中國(guó)各項(xiàng)目獲獎(jiǎng)詳情;
  • ⑥ 中國(guó)選手每日獲得獎(jiǎng)牌數(shù);
  • ⑦ 中國(guó)選手每日獲得金牌數(shù);
  • ⑧ 中國(guó)選手奪金詳細(xì)數(shù)據(jù);

說明: 這里就不做結(jié)果分析了,因?yàn)橥ㄟ^上圖,相信大家應(yīng)該能夠很清晰的了解到2020東京奧運(yùn)會(huì),哪怕你沒看過。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1195

    瀏覽量

    20959
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84755

原文標(biāo)題:用 Python 制作可視化大屏,特簡(jiǎn)單!

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是大數(shù)據(jù)可視化?特點(diǎn)有哪些?

    數(shù)據(jù)可視化是指通過大屏幕展示大量數(shù)據(jù)和信息,以直觀、可視化的方式幫助用戶理解和分析數(shù)據(jù)。這種
    的頭像 發(fā)表于 12-16 16:59 ?210次閱讀

    如何找到適合的大數(shù)據(jù)可視化系統(tǒng)

    選擇合適的大數(shù)據(jù)可視化系統(tǒng)是企業(yè)或組織在數(shù)字轉(zhuǎn)型過程中至關(guān)重要的一步。一個(gè)優(yōu)秀的大數(shù)據(jù)
    的頭像 發(fā)表于 12-13 15:47 ?132次閱讀

    智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

    博達(dá)可視化設(shè)計(jì)平臺(tái)在智慧能源領(lǐng)域的價(jià)值體現(xiàn)在實(shí)時(shí)監(jiān)控、數(shù)據(jù)可視化、決策支持和效率提升等方面。借助該平臺(tái),企業(yè)可以輕松搭建智慧能源類可視化
    的頭像 發(fā)表于 11-29 10:00 ?342次閱讀
    智慧能源<b class='flag-5'>可視化</b>監(jiān)管平臺(tái)——助力<b class='flag-5'>可視化</b>能源<b class='flag-5'>數(shù)據(jù)</b>管理

    可視化數(shù)據(jù)制作流程

    制作可視化數(shù)據(jù)是一項(xiàng)涵蓋數(shù)據(jù)分析、設(shè)計(jì)和技術(shù)實(shí)現(xiàn)的復(fù)雜任務(wù)。從數(shù)據(jù)處理到展示呈現(xiàn),每個(gè)步驟都
    的頭像 發(fā)表于 07-24 13:57 ?294次閱讀

    數(shù)據(jù)可視化 開源

    在當(dāng)今信息爆炸的時(shí)代,數(shù)據(jù)已經(jīng)成為各個(gè)行業(yè)決策制定和業(yè)務(wù)發(fā)展的關(guān)鍵。為了更直觀、準(zhǔn)確地理解和利用海量數(shù)據(jù), 大數(shù)據(jù)可視化 成為一種強(qiáng)大的工
    的頭像 發(fā)表于 06-27 16:06 ?418次閱讀
    大<b class='flag-5'>屏</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>可視化</b> 開源

    如何實(shí)現(xiàn)園區(qū)大可視化?

    如何實(shí)現(xiàn)園區(qū)大可視化? 1.建立孿生模型:首先需要建立園區(qū)的孿生模型,即一個(gè)數(shù)字的虛擬模型,反映了園區(qū)的實(shí)際情況、結(jié)構(gòu)、設(shè)備、人員等信息。這個(gè)模型可以通過傳感器、監(jiān)控設(shè)備、GIS 數(shù)據(jù)
    的頭像 發(fā)表于 06-19 15:39 ?435次閱讀
    如何實(shí)現(xiàn)園區(qū)大<b class='flag-5'>屏</b><b class='flag-5'>可視化</b>?

    物聯(lián)網(wǎng)時(shí)代,為什么需要可視化數(shù)據(jù)

    在互聯(lián)網(wǎng)和大數(shù)據(jù)時(shí)代,工業(yè)領(lǐng)域日益增長(zhǎng)的數(shù)據(jù)量越來(lái)越離不開數(shù)據(jù)分析的支持,可視化數(shù)據(jù)便是集中
    的頭像 發(fā)表于 06-18 13:53 ?393次閱讀
    物聯(lián)網(wǎng)時(shí)代,為什么需要<b class='flag-5'>可視化</b><b class='flag-5'>數(shù)據(jù)</b>大<b class='flag-5'>屏</b>

    態(tài)勢(shì)數(shù)據(jù)可視化技術(shù)有哪些

    智慧華盛恒輝態(tài)勢(shì)數(shù)據(jù)可視化技術(shù)是一種將數(shù)據(jù)以圖形、圖像、動(dòng)畫等視覺形式展現(xiàn)出來(lái)的技術(shù),特別是在處理和分析態(tài)勢(shì)數(shù)據(jù)時(shí),該技術(shù)能夠?qū)?fù)雜的數(shù)據(jù)轉(zhuǎn)
    的頭像 發(fā)表于 06-11 15:47 ?385次閱讀

    智慧大是如何實(shí)現(xiàn)數(shù)據(jù)可視化的?

    智慧大,作為數(shù)據(jù)可視化的重要載體,已在城市管理、交通監(jiān)控、商業(yè)運(yùn)營(yíng)等領(lǐng)域廣泛應(yīng)用。本文旨在闡述智慧大實(shí)現(xiàn)數(shù)據(jù)
    的頭像 發(fā)表于 06-04 15:02 ?625次閱讀
    智慧大<b class='flag-5'>屏</b>是如何實(shí)現(xiàn)<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>可視化</b>的?

    數(shù)據(jù)可視化的作用和意義

    數(shù)據(jù)可視化是指利用大屏幕設(shè)備展示數(shù)據(jù)信息,通過圖表、圖像、動(dòng)畫等視覺手段將數(shù)據(jù)呈現(xiàn)出來(lái),以
    的頭像 發(fā)表于 06-03 17:56 ?687次閱讀

    三維可視化數(shù)據(jù)的設(shè)計(jì)原理和技巧

    三維可視化數(shù)據(jù)設(shè)計(jì)面向交通、園區(qū)、城市、建筑、應(yīng)急等領(lǐng)域的客戶,以孿生可視能力賦能,提供行業(yè)解決方案。雙渲染引擎,1:1還原真實(shí)世界,在模型運(yùn)行流暢的基礎(chǔ)上提供極佳的視覺效果。今天
    的頭像 發(fā)表于 05-30 17:09 ?560次閱讀

    數(shù)據(jù)可視化是什么?運(yùn)用了什么技術(shù)

    數(shù)據(jù)可視化 是一種利用大屏幕設(shè)備展示數(shù)據(jù)可視化結(jié)果的技術(shù),旨在以更生動(dòng)、直觀的方式呈現(xiàn)數(shù)據(jù)
    的頭像 發(fā)表于 05-24 15:35 ?874次閱讀

    態(tài)勢(shì)數(shù)據(jù)可視化技術(shù)有哪些

    智慧華盛恒輝態(tài)勢(shì)數(shù)據(jù)可視化技術(shù)是一種將復(fù)雜、動(dòng)態(tài)的態(tài)勢(shì)數(shù)據(jù)以直觀、易于理解的方式展現(xiàn)出來(lái)的技術(shù)手段。以下是幾種主要的態(tài)勢(shì)數(shù)據(jù)可視化技術(shù): 網(wǎng)
    的頭像 發(fā)表于 04-22 15:17 ?416次閱讀

    物聯(lián)網(wǎng)可視化監(jiān)控大如何實(shí)現(xiàn)?有什么功能?

    在物聯(lián)網(wǎng)飛速發(fā)展的時(shí)代,可視化監(jiān)控大成為了眾多企業(yè)和機(jī)構(gòu)實(shí)現(xiàn)智能管理和監(jiān)控的重要工具。它將各種各樣設(shè)備的運(yùn)行狀態(tài)和數(shù)據(jù)以圖形、圖表、動(dòng)畫等形式展示在大
    的頭像 發(fā)表于 04-11 09:25 ?896次閱讀