
本篇文章將分享騰訊疫情實時數據抓取,獲取全國各地和貴州省各地區的實時數據,並將數據存儲至本地,最后調用 Maplotlib和Seaborn
繪制中國各地區、貴州省各城市、新增人數的圖形。希望這篇數據可視化分析文章對您有所幫助!
0 1
Python實時數據爬取
我們的目標網站是騰訊新聞網實時數據,其原理主要是通過 Requests獲取Json請求 ,從而得到各省、各市的疫情數據。
爬蟲目標網站:
1. 分析網站
通過瀏覽器 “審查元素”查看源代碼及“網絡”反饋的消息 ,如下圖所示:

對應的響應信息如下所示:

2. 發送請求並獲取Json數據
通過分析 url地址、請求方法、參數及響應格式 ,可以獲取Json數據, 注意url需要增加一個時間戳
。下面代碼展示了獲取數據的鍵值及34個省份。

輸出結果如下圖所示,其順序按照確診人數排序。

3. 獲取湖北省疫情數據
接着通過 num[0][‘children’] 獲取湖北省的疫情數據,代碼如下:

同樣的方法可以獲取各省份的數據,比如 num[1][‘children’]
表示廣東省疫情數據,我們設置循環就能獲取所有數據。其數據包括當日數據(today)和累計數據(total),confirm表示確診、suspect表示疑似、dead表示死亡、heal表示治愈。

我們將所抓取的數據和真實的數據進行對比,武漢截止2月13日下午4點,新增確診人數13436、累計確診32994,發現是完全一致的。


4. 獲取各省確診人數
注意,初始化每個省份人數為0,然后循環累加該省所有城市的確診人數,調用 city_data[‘total’][‘confirm’]
獲取各城市的確診數據。

輸出結果如下圖所示:

接下來我們分享可視化畫圖。
0 2
Matplotlib繪制柱狀圖
首先,我們調用Matplotlib繪制全國各地區的確診人數柱狀圖,幫助大家回憶其基本用法。 total_data為字典變量鍵值對 ,比如{‘湖北’:
48206, ‘廣東’: 1241,…}

代碼過長僅展示部分,完整代碼請添加客服領取
輸出結果如下圖所示:

那么,如果我想獲取累計確診人數、新增確診人數、死亡人數和治愈人數,並進行可視化展示,怎么辦呢?只需要簡單 替換參數 即可。
-
city_data[‘total’][‘confirm’] 確診人數
-
city_data[‘total’][‘suspect’] 疑似人數
-
city_data[‘total’][‘dead’] 死亡人數
-
city_data[‘total’][‘heal’] 治愈人數
-
city_data[‘today’][‘confirm’] 新增確診人數

代碼過長僅展示部分,完整代碼請添加客服領取
輸出如下圖所示,但是Matplotlib畫圖不太美觀,接下來分享 Seaborn可視化 。

0 3
數據存儲及Seaborn繪制柱狀圖
Seaborn是在Matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,
在大多數情況下使用seaborn能做出很具有吸引力的圖, 而使用matplotlib就能制作具有更多特色的圖。
安裝:pip install seaborn

1. 文件寫入

代碼過長僅展示部分,完整代碼請添加客服領取
存儲成功之后,如下圖所示。

對應騰訊的數據,如下圖所示:

2. Seaborn繪制柱狀圖

代碼過長僅展示部分,完整代碼請添加客服領取
顯示結果如下圖所示:

0 4
Seaborn繪制對比柱狀圖
如果需要顯示多個數據對比,則需要使用下面的代碼。由於Seaborn能夠進行按類別分組繪圖,我們需要將抓取的數據存儲為如下圖所示的文件,才能將數據繪制在同一張圖中。


代碼過長僅展示部分,完整代碼請添加客服領取
此時繪制如下圖所示:

但是當數據很小時,其柱狀圖無法很好地顯示,建議采用以下方法處理:
-
歸一化處理
-
湖北省外和湖北省內對比

替換成新增確診病例的對比圖如下所示。

0 5
Seaborn繪制趨勢圖及對比圖
1. 湖北省內外對比圖
在做數據分析過程中,我們通常需要對數據進行 預處理或加工 ,下面將數據划分為湖北省內和湖北省外,再繪制對應的對比圖。


輸出結果如下圖所示:

2. 疫情趨勢圖

代碼過長僅展示部分,完整代碼請添加客服領取
輸出結果如下圖所示,疑似人數開始下降。武漢加油,中國必勝!

0 6
Seaborn繪制其他圖形及分析
作者這里 僅補充繪圖語法 ,更多分析結果(死亡數-治愈數)請讀者進行。同時,讀者可以增加數據量,全國所有城市的數據,可能繪制的圖形更為豐滿。
1. KDE圖
sns.jointplot(x=“dead”, y=“heal”, data=data, kind=“kde”, space=0, color="#6AB27B")

代碼過長僅展示部分,完整代碼請添加客服領取
顯示如下圖所示:

2. 六角形
sns.jointplot(x=“dead”, y=“heal”, data=data, color=“b”, kind=‘hex’)

3. 散點圖
sns.jointplot(x=“dead”, y=“heal”, data=data, color=“b”, s=50, kind=‘scatter’, space = 0.1, size = 8, ratio = 5)

4. 回歸圖
sns.jointplot(x=“dead”, y=“heal”, data=data, color=“b”, kind=‘reg’)
5. 散點圖+KDE 圖
g = (sns.jointplot(x=“dead”, y=“heal”, data=data, color=“k”).plot_joint(sns.kdeplot, zorder=0, n_levels=6))

0 7
貴州省可視化分析
接着我們抓取某一個省的數據,比如貴州省。

輸出結果如下圖所示:

添加解析數據和存儲文件,完整代碼如下:

代碼過長僅展示部分,完整代碼請添加客服領取
完整輸出內容如下所示:


最后采用Seaborn繪制圖形如下所示:

代碼過長僅展示部分,完整代碼請添加客服領取
貴州省2月13日疫情顯示結果如下所示:


參考文章:
-
Python實戰:抓肺炎疫情實時數據,畫2019-nCoV疫情地圖
-
用Python抓新型冠狀病毒肺炎疫情數據,繪制全國疫情分布圖
-
2020Python開發者日:爬蟲框架的技術實現與模塊應用的經驗分享
End.
作者:Eastmount
來源:CSDN
https://blog.csdn.net/Eastmount/article/details/104298388
本文為轉載分享,如侵權請聯系后台刪除
零基礎學 Python,請往看下嘛

**只需7天時間,跨進Python編程大門,已有3800+加入 **
**【基礎】0基礎入門python,24小時有人快速解答問題; **
**【提高】40多個項目實戰,老手可以從真實場景中學習python; **
**【直播】不定期直播項目案例講解,手把手教你如何分析項目; **
**【分享】優質python學習資料分享,讓你在最短時間獲得有價值的學習資 ** **源; **
**圈友優質資料或學習分享,會不時給予贊賞支持,希望每個優質圈友既能賺回加入費用,也能快速成長,並享受分享與幫助他人的樂趣。 **
**【人脈】收獲一群志同道合的朋友,並且都是python從業者 **
**【價格】本着布道思想,只需 69元 加入一個能保證學習效果的良心圈子。 **
**【贈予】 ** **價值 ** **109元 0基礎入門在線課程 ** **,免費送給圈友們,供鞏固 **