用python畫出全球疫情趨勢變化圖

前言

文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。

作者:謙睿科技

PS:如有需要Python學習資料的小夥伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun

Python

Python的設計哲學是“優雅、明確、簡單”。它的語言方式與自然語言很接近 ,具有很好的可閱讀性,當然理解起來也就不是晦澀難懂,更容易讓人親近。

 

Python語言(Python原意是一種“大蟒蛇”)

 

Python在最新的編程語言排名中第三名

 

目前我國也正在逐步將Python納入教學體系,浙江省已納入高考,7選3。山東省甚至將其作爲小學六年級的信息學教材。南京市列入中考特招項。

 

當前全球的疫情還在持續中,我們如用python來製作疫情趨勢變化圖?

在遇到難題時當然要學會去GitHub找找思路,只需要在GitHub上搜索疫情數據就能看到很多大神做的疫情數據爬蟲

甚至有些會項目提供數據接口(https://lab.isaaclin.cn/nCoV/),按照使用說明調用端口即可。注意請求頻率哦

AkShare 是基於 Python 的開源數據接口庫, 目的是實現對期貨, 期權, 基金等衍生金融產品和另類數據從數據採集, 數據清洗加工, 到數據下載的工具, 滿足金融數據科學家, 數據科學愛好者在數據獲取方面的需求。那麼這個提供金融數據的庫目前也採集了網易和丁香園的疫情數據提供給大家

使用起來也很簡單

import akshare as ak
epidemic_hist_all_df = ak.epidemic_hist_all() #獲取全部歷史數據

最近國內疫情已經有所好轉,但是國外的情況不容樂觀,那麼怎樣用Python去製作動態圖表來看全球疫情變化趨勢呢?比如下面的國內外疫情發展趨勢:

其實用Python實現並不難,簡單來說就分爲三步:

  • 獲取數據(requests)
  • 數據清洗(pandas)
  • 數據可視化(pyecharts)

數據獲取與處理

 

疫情數據獲取並不是很難,在目前互聯網上已經有許多提供數據的網站。

接下來兩行命令就能拿下所有歷史數據

data = requests.get('https://lab.isaaclin.cn/nCoV/api/area?latest=0')
data = data.json()

先來看下數據量

可以看到一共採集到了7584條數據,由於髒數據比較多,所以這一部分的工作量是比較大的。

首先要將所有數據從字典提取出來並對時間戳進行轉換,然後將數據保存到pandas裏

data = requests.get('https://lab.isaaclin.cn/nCoV/api/area?latest=0')
data = data.json()
res = data['results']
df = pd.DataFrame(res)
def time_c(timeNum):
    timeTemp = float(timeNum/1000)
    tupTime = time.localtime(timeTemp)
    stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)
    return stadardTime

for i in range(len(df)):

    df.iloc[i,16] = time_c(df.iloc[i,16])

for i in range(len(df)):

    df.iloc[i,16] = df.iloc[i,16][5:10]

現在數據就成了這樣

這樣看起來就舒服多了,但是還是不可以使用,因爲API每天會採集很多次數據,所以裏面有很多重複數據和異常數據,所以接下來重點處理這一部分。對於重複數據我們只保留最新一個,對於空數據我們選擇前一天的數據填充。

#去重部分代碼
tem = df1[df1['updateTime'] == '03-02']
tem = tem.drop_duplicates(['provinceShortName'], keep='last')
for i in date[1:41]:
    tem1 = df1[df1['updateTime'] == i]
    tem1 = tem1.drop_duplicates(['provinceName'], keep='last')
    tem = tem.append(tem1)

tem = tem.reset_index(drop=True)
tem

由於篇幅原因,就不再貼出更多的代碼,我們來看下最終處理完的數據

數據可視化

 

首先是國內外疫情趨勢

public class MyActivity extends AppCompatActivity from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Page, Pie, Timeline,Grid


def timeline_bar() -> Timeline:
    x = ['國內','國外']
    tl = Timeline()
    tl = Timeline()
    tl.add_schema(is_auto_play = True,
    play_interval = 500,
    is_loop_play = False)
    k= 0
    for i in date:
        bar = (
            Line()
            .add_xaxis(date)
            .add_yaxis("國內", hs(c1,k))
            .add_yaxis("國外", hs(c,k))
            .extend_axis(
            yaxis=opts.AxisOpts(
            )
        )
            .set_series_opts(
            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
            label_opts=opts.LabelOpts(is_show=False),
        )
            .set_global_opts(title_opts=opts.TitleOpts("{}國內外疫情趨勢".format(i)))
        )
        tl.add(bar, "{}".format(i))
        k = k + 1
    return tl
timeline_bar().render_notebook()

可以看出,國內的增長已經處於平緩狀態,而國外自二月底來突然爆發,目前還處於上升期,這也是爲什麼現在要嚴防境外輸入病例。再來看看國外具體的病例佔比吧(微信GIF只能上傳5M所以有點糊):

可以看出在最近幾天韓國、日本、意大利突然爆發,這三個國家的病例數量就佔到了約75%。最後再來看看全球疫情的變化趨勢吧!

 

至此,我們就完全使用Python對疫情數據進行了一次動態可視化,最後還是要說一句,疫情仍未散去,大家要繼續做好防護!

果你處於想學Python或者正在學習Python,Python的教程不少了吧,但是是最新的嗎?

說不定你學了可能是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。

用python從0到1製作動態條形圖的過程

 

 

用python從0到1製作動態條形圖的過程

 

 

用python從0到1製作動態條形圖的過程

 

 

用python從0到1製作動態條形圖的過程

 

 

以上這些教程小編已經爲大家打包準備好了,希望對正在學習的你有所幫助!

獲取方式,私信小編 “ 資料 ”,即可免費獲取哦

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章