日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用pyecharts库对京津冀上广深空气质量数据进行可视化

發(fā)布時間:2023/12/29 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用pyecharts库对京津冀上广深空气质量数据进行可视化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文以當(dāng)前熱門編程語言Python作為開發(fā)工具,利用Python的BeautifulSoup庫進行網(wǎng)頁爬蟲以獲取空氣質(zhì)量數(shù)據(jù)(AQI、PM2.5),然后綜合運用第三方庫Pandas進行數(shù)據(jù)處理,最后利用Python的pyecharts庫對空氣質(zhì)量數(shù)據(jù)進行可視化圖形的呈現(xiàn),該設(shè)計具體實現(xiàn)了京津冀上廣深空氣質(zhì)量數(shù)據(jù)的爬取、處理以及圖形的輸出。
本文將簡單介紹整個流程,重點介紹可視化部分。

目錄

    • 1 數(shù)據(jù)獲取
      • 1.1 網(wǎng)頁爬取
      • 1.2 數(shù)據(jù)存儲
      • 1.3 數(shù)據(jù)處理
    • 2 數(shù)據(jù)可視化
      • 2.1 數(shù)據(jù)可視化步驟
        • 2.1.1 導(dǎo)入相關(guān)包或類庫
        • 2.1.2 讀取京津冀上廣深六個城市的.csv文件
        • 2.1.3 獲取文件中所需要的信息
        • 2.1.4 統(tǒng)計月均PM2.5
        • 2.1.5 設(shè)置橫縱坐標(biāo)
        • 2.1.6 添加標(biāo)題
        • 2.1.7 添加相關(guān)數(shù)據(jù)
        • 2.1.8 在根目錄下生成.html文件
      • 2.2 數(shù)據(jù)可視化結(jié)果
    • 3 地圖可視化
      • 3.1 導(dǎo)入相關(guān)地圖庫
      • 3.2 導(dǎo)入地址和相應(yīng)的PM2.5數(shù)據(jù)
      • 3.3 設(shè)置地圖名字以及畫布大小
      • 3.4 設(shè)置可視化點的大小和動態(tài)效果以及顏色條顯示范圍
      • 3.5 生成.html格式的文件
      • 3.6 可視化地圖結(jié)果

1 數(shù)據(jù)獲取

選取天氣后報網(wǎng),進行相關(guān)數(shù)據(jù)的爬取。該網(wǎng)頁最大的優(yōu)點是可以查詢歷史數(shù)據(jù),天氣數(shù)據(jù)種類豐富,數(shù)據(jù)清楚,包含的城市甚至城鎮(zhèn)都較為全面,方便查詢所需要的數(shù)據(jù)。其中,歷史天氣中可以查詢每日的天氣狀況和氣溫等;空氣質(zhì)量可以查詢AQI和PM2.5的歷史數(shù)據(jù)和空氣質(zhì)量等級,很方便 大家日常生活中的讀取,數(shù)據(jù)清晰簡潔。

1.1 網(wǎng)頁爬取

利用BeautifulSoup解析器解析URL(互聯(lián)網(wǎng)上的每個文件都有唯一的URL)包含的文本信息,分析網(wǎng)頁HTML文本和頁面的設(shè)置規(guī)則,導(dǎo)入相關(guān)庫
抓取目標(biāo)數(shù)據(jù),獲取需要的數(shù)據(jù)信息:日期、質(zhì)量等級、AQI指數(shù)、PM2.5等

1.2 數(shù)據(jù)存儲

將所獲取的數(shù)據(jù)信息組合生成.csv文件格式,最終實現(xiàn)結(jié)果是抓取到的數(shù)據(jù)信息形成了一個二維表,方便后面進行數(shù)據(jù)處理

1.3 數(shù)據(jù)處理

導(dǎo)入Numpy包,用于進行科學(xué)計算,包括了一個強大的N維數(shù)組對象Array,并且擁有成熟的函數(shù)庫,比如矩陣數(shù)據(jù)類型和矢量處理
導(dǎo)入Pandas數(shù)據(jù)分析包,它包含了許多高級數(shù)據(jù)結(jié)構(gòu)和操作工具,能夠使得數(shù)據(jù)分析更加容易與快捷

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

2.1 數(shù)據(jù)可視化步驟

2.1.1 導(dǎo)入相關(guān)包或類庫

import numpy as np import pandas as pd from pyecharts import Line

2.1.2 讀取京津冀上廣深六個城市的.csv文件

citys=['beijing','tianjin','shijiazhuang','shanghai','guangzhou','shenzhen'] v=[] for i in range(6):filename=citys[i]+'_2018.csv'df=pd.read_csv(filename,header=None,names=["Date","Quality_grade","AQI","AQI_rank","PM"])

2.1.3 獲取文件中所需要的信息

dom=df[['Date','PM']] list1=[] for j in dom['Date']:time=j.split('-')[1]list1.append(time) df['month']=list1

注:
1、split()方法通過指定分隔符對字符串進行切片。time=j.split(’-’)[1]表示以’-'為分隔符,并取序列為1的項
2、list.append(obj)表示在列表末尾添加新的對象

2.1.4 統(tǒng)計月均PM2.5

month_message=df.groupby(['month']) month_com=month_message['PM'].agg(['mean']) month_com.reset_index(inplace=True) month_com_last=month_com.sort_index()

注:
1、groupby是pandas中的一個分組函數(shù),對原DataFrame進行打包分組。df.groupby([‘month’])表示按照月份進行分組
2、DataFrame對象groupby.agg方法為聚合(其操作包括max、min、std、sum、count)month_message[‘AQI’].agg([‘mean’])表示根據(jù)Dataframe的列’AQI’進行劃分,再進行均值聚合操作
3、pandas中inplace參數(shù)為True,表示不創(chuàng)建新的對象,直接對原始對象進行修改
4、reset_index表示還原索引,變?yōu)槟J(rèn)的整型索引
5、month_com.sort_index()方法表示按month_com的行索引進行排序

2.1.5 設(shè)置橫縱坐標(biāo)

v1=np.array(month_com_last['mean']) v1=["{}".format(int(i)) for i in v1] v.append(v1)attr = ["{}".format(str(i) + '月') for i in range(1, 13)]

2.1.6 添加標(biāo)題

line=Line("2018年京津冀上廣深PM2.5全年走勢圖",title_pos='center',title_top='0',width=800,height=400)

2.1.7 添加相關(guān)數(shù)據(jù)

line.add("北京",attr,v[0],line_color='red',legend_top='8%') line._option['series'][0]['itemStyle']={'color': 'red'}

其余,天津、石家莊、上海、廣州、深圳五個城市的說明與北京類似,只是將線條顏色依次改為’green’、‘pink’、‘purple’、‘blue’、‘orange’

2.1.8 在根目錄下生成.html文件

line.render("2018年京津冀上廣深PM2.5全年走勢圖.html")

注:pyecharts的一些基本操作
1、add()主要方法,用于添加圖表的數(shù)據(jù)和設(shè)置各種配置項
2、render()默認(rèn)將會在根目錄下生成一個 .html 的文件

2.2 數(shù)據(jù)可視化結(jié)果

pyecharts是一個用于生成Echarts圖表的類庫,包含了很多的圖表類型,而Echarts是開源的一個數(shù)據(jù)可視化JS庫,主要用于數(shù)據(jù)可視化,擁有良好的交互性和精巧的圖表設(shè)計

gif格式

說明:因格式轉(zhuǎn)換器問題,呈現(xiàn)的效果略微模糊,但是程序運行出來的html格式的圖是十分清楚的。

常規(guī)格式

分析:從圖1中可以看出,2018年南北部地區(qū)月均PM2.5值差異明顯。京津冀地區(qū)的PM2.5值“名列前茅”,位居前三,走勢較為一致,呈現(xiàn)秋冬高值春夏低值的特點。其中石家莊奪得“桂冠”,較為“高調(diào)”,全年P(guān)M2.5值走勢最為突出,1月份達到最大值104,8、9月份達到最低值35。根據(jù)空氣質(zhì)量標(biāo)準(zhǔn),石家莊全年都差不多在「優(yōu)」(0~35)以下了。上廣深情況較為樂觀,走勢一致且較為平穩(wěn),最高值均出現(xiàn)在1月份。上海和廣州情況差不多(5、6月份除外),5、6月份上海月均PM2.5值高于廣州且相差較大,廣州情況相對較好。深圳情況最為樂觀,1月份達到最大值38,5月份達到最低值16,PM2.5月均值都在40以下,全年空氣質(zhì)量等級差不多都在「優(yōu)」,與石家莊形成了鮮明對比。較南部地區(qū)而言,北部地區(qū)空氣質(zhì)量有待改善。

3 地圖可視化

3.1 導(dǎo)入相關(guān)地圖庫

from pyecharts import Geo

3.2 導(dǎo)入地址和相應(yīng)的PM2.5數(shù)據(jù)

data = [("北京", 88),("天津", 74), ("石家莊", 104),("上海", 57), ("廣州", 59), ("深圳", 38) ]

3.3 設(shè)置地圖名字以及畫布大小

geo = Geo("京津冀上廣深城市空氣質(zhì)量","data from pm2.5",title_color="#fff",title_pos="center",width=1200,height=600,background_color="#404a59", )

3.4 設(shè)置可視化點的大小和動態(tài)效果以及顏色條顯示范圍

attr, value = geo.cast(data) geo.add(" ",# 注意與""的區(qū)別,在圖頂部中間的scatter點attr,value,type="effectScatter",is_random=True,# symbol="pin",symbol_size=10,effect_scale=5,effect_period=2.5,is_more_utils=True,is_visualmap=True,visual_range=[0, 120],visual_text_color="#fff", )

3.5 生成.html格式的文件

geo.show_config() geo.render(path="2018年京津冀上廣深PM2.5.html")

3.6 可視化地圖結(jié)果

分析:我們可以清楚看到京津冀上廣深每一城市在地圖上的位置,以及它們的經(jīng)緯度(前兩個數(shù)據(jù)代表經(jīng)緯度,第三個數(shù)據(jù)是2018年每個城市最大月均PM2.5值)。根據(jù)顏色的映射,京津冀地區(qū)的PM2.5污染較為嚴(yán)重,而上廣深的空氣質(zhì)量較為良好。
注:該圖在本人另一篇博客基于Python的京津冀上廣深空氣質(zhì)量可視化分析是以gif格式進行展示的,可以看到其動態(tài)的一個效果。

總結(jié)

以上是生活随笔為你收集整理的利用pyecharts库对京津冀上广深空气质量数据进行可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。