利用pyecharts库对京津冀上广深空气质量数据进行可视化
本文以當前熱門編程語言Python作為開發工具,利用Python的BeautifulSoup庫進行網頁爬蟲以獲取空氣質量數據(AQI、PM2.5),然后綜合運用第三方庫Pandas進行數據處理,最后利用Python的pyecharts庫對空氣質量數據進行可視化圖形的呈現,該設計具體實現了京津冀上廣深空氣質量數據的爬取、處理以及圖形的輸出。
本文將簡單介紹整個流程,重點介紹可視化部分。
目錄
- 1 數據獲取
- 1.1 網頁爬取
- 1.2 數據存儲
- 1.3 數據處理
- 2 數據可視化
- 2.1 數據可視化步驟
- 2.1.1 導入相關包或類庫
- 2.1.2 讀取京津冀上廣深六個城市的.csv文件
- 2.1.3 獲取文件中所需要的信息
- 2.1.4 統計月均PM2.5
- 2.1.5 設置橫縱坐標
- 2.1.6 添加標題
- 2.1.7 添加相關數據
- 2.1.8 在根目錄下生成.html文件
- 2.2 數據可視化結果
- 3 地圖可視化
- 3.1 導入相關地圖庫
- 3.2 導入地址和相應的PM2.5數據
- 3.3 設置地圖名字以及畫布大小
- 3.4 設置可視化點的大小和動態效果以及顏色條顯示范圍
- 3.5 生成.html格式的文件
- 3.6 可視化地圖結果
1 數據獲取
選取天氣后報網,進行相關數據的爬取。該網頁最大的優點是可以查詢歷史數據,天氣數據種類豐富,數據清楚,包含的城市甚至城鎮都較為全面,方便查詢所需要的數據。其中,歷史天氣中可以查詢每日的天氣狀況和氣溫等;空氣質量可以查詢AQI和PM2.5的歷史數據和空氣質量等級,很方便 大家日常生活中的讀取,數據清晰簡潔。
1.1 網頁爬取
利用BeautifulSoup解析器解析URL(互聯網上的每個文件都有唯一的URL)包含的文本信息,分析網頁HTML文本和頁面的設置規則,導入相關庫
抓取目標數據,獲取需要的數據信息:日期、質量等級、AQI指數、PM2.5等
1.2 數據存儲
將所獲取的數據信息組合生成.csv文件格式,最終實現結果是抓取到的數據信息形成了一個二維表,方便后面進行數據處理
1.3 數據處理
導入Numpy包,用于進行科學計算,包括了一個強大的N維數組對象Array,并且擁有成熟的函數庫,比如矩陣數據類型和矢量處理
導入Pandas數據分析包,它包含了許多高級數據結構和操作工具,能夠使得數據分析更加容易與快捷
2 數據可視化
2.1 數據可視化步驟
2.1.1 導入相關包或類庫
import numpy as np import pandas as pd from pyecharts import Line2.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 統計月均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中的一個分組函數,對原DataFrame進行打包分組。df.groupby([‘month’])表示按照月份進行分組
2、DataFrame對象groupby.agg方法為聚合(其操作包括max、min、std、sum、count)month_message[‘AQI’].agg([‘mean’])表示根據Dataframe的列’AQI’進行劃分,再進行均值聚合操作
3、pandas中inplace參數為True,表示不創建新的對象,直接對原始對象進行修改
4、reset_index表示還原索引,變為默認的整型索引
5、month_com.sort_index()方法表示按month_com的行索引進行排序
2.1.5 設置橫縱坐標
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 添加標題
line=Line("2018年京津冀上廣深PM2.5全年走勢圖",title_pos='center',title_top='0',width=800,height=400)2.1.7 添加相關數據
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()主要方法,用于添加圖表的數據和設置各種配置項
2、render()默認將會在根目錄下生成一個 .html 的文件
2.2 數據可視化結果
pyecharts是一個用于生成Echarts圖表的類庫,包含了很多的圖表類型,而Echarts是開源的一個數據可視化JS庫,主要用于數據可視化,擁有良好的交互性和精巧的圖表設計
gif格式
說明:因格式轉換器問題,呈現的效果略微模糊,但是程序運行出來的html格式的圖是十分清楚的。
常規格式
分析:從圖1中可以看出,2018年南北部地區月均PM2.5值差異明顯。京津冀地區的PM2.5值“名列前茅”,位居前三,走勢較為一致,呈現秋冬高值春夏低值的特點。其中石家莊奪得“桂冠”,較為“高調”,全年PM2.5值走勢最為突出,1月份達到最大值104,8、9月份達到最低值35。根據空氣質量標準,石家莊全年都差不多在「優」(0~35)以下了。上廣深情況較為樂觀,走勢一致且較為平穩,最高值均出現在1月份。上海和廣州情況差不多(5、6月份除外),5、6月份上海月均PM2.5值高于廣州且相差較大,廣州情況相對較好。深圳情況最為樂觀,1月份達到最大值38,5月份達到最低值16,PM2.5月均值都在40以下,全年空氣質量等級差不多都在「優」,與石家莊形成了鮮明對比。較南部地區而言,北部地區空氣質量有待改善。
3 地圖可視化
3.1 導入相關地圖庫
from pyecharts import Geo3.2 導入地址和相應的PM2.5數據
data = [("北京", 88),("天津", 74), ("石家莊", 104),("上海", 57), ("廣州", 59), ("深圳", 38) ]3.3 設置地圖名字以及畫布大小
geo = Geo("京津冀上廣深城市空氣質量","data from pm2.5",title_color="#fff",title_pos="center",width=1200,height=600,background_color="#404a59", )3.4 設置可視化點的大小和動態效果以及顏色條顯示范圍
attr, value = geo.cast(data) geo.add(" ",# 注意與""的區別,在圖頂部中間的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 可視化地圖結果
分析:我們可以清楚看到京津冀上廣深每一城市在地圖上的位置,以及它們的經緯度(前兩個數據代表經緯度,第三個數據是2018年每個城市最大月均PM2.5值)。根據顏色的映射,京津冀地區的PM2.5污染較為嚴重,而上廣深的空氣質量較為良好。
注:該圖在本人另一篇博客基于Python的京津冀上廣深空氣質量可視化分析是以gif格式進行展示的,可以看到其動態的一個效果。
總結
以上是生活随笔為你收集整理的利用pyecharts库对京津冀上广深空气质量数据进行可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何清理ubunu的空间--使用磁盘使用
- 下一篇: 稞麦综合视频下载(xmlbar)