數據採集實戰:通過Python獲取和分析Google趨勢中Covid-19的關注程度

  • 2020 年 3 月 17 日
  • 筆記

在傳染病研究領域,社交媒體數據已被證明可作為預測感冒和流感季節的發作和進展的指標。在本文中,我們將使用Google Trends API來衡量與冠狀病毒的狀態。我們將使用python谷歌趨勢API pytrends在州一級分析google搜索“冠狀病毒”。

安裝依賴

要安裝pytrends,請打開命令行並輸入:

pip install pytrends

對於我們這裡,如果需要代理的話需要在安裝requests的依賴

pip install requests[socks]

編寫代碼

然後打開你喜歡的編輯器(我用PyCharm社區版)

from pytrends.request import TrendReq

接下來,我們指定主機語言,時區和有效負載。 我們將主機語言指定為英語(“ en-US”),時區指定為“中央標準時區”,即“ 360”,並且可以將google屬性過濾器(gprop)保留為空字符串。 我們還設置了category = 0,它對應於與關鍵字相關的所有類別。讓我們獲取2020年2月至2020年3月在紐約的“冠狀病毒”數據:

pytrends = TrendReq(hl='en-US', tz=360)  pytrends.build_payload(['Coronavirus'], cat=0, timeframe='2020-02-01 2020-03-10',  gprop='', geo='US-NY')

然後,我們定義一個dataframe為生成的pytrends對象,並打印前五行:

df = pytrends.interest_over_time()  print(df.head())

內容圖片
我們還可以使用seaborn和matplotlib繪製“冠狀病毒”搜索的時間序列:

import matplotlib.pyplot as plt  import seaborn as sns  import pandas as pdsns.set()  df['timestamp'] = pd.to_datetime(df.index)  sns.lineplot(df['timestamp'], df['Coronavirus'])plt.title("Normalized Searches for Coronavirus in NY")  plt.ylabel("Number of Searches")  plt.xlabel("Date")


讓我們對馬薩諸塞州的“冠狀病毒”做同樣的事情:

封裝成函數

我們可以定義一個函數,使我們可以為任何周提取此數據:

def get_searches(key_word, state):      pytrends = TrendReq(hl='en-US', tz=360)      pytrends.build_payload([key_word], cat=0, timeframe='2020-02-01 2020-03-10',  gprop='',geo='US-{}'.format(state))      df = pytrends.interest_over_time()          print(df.head())        sns.set()      df['timestamp'] = pd.to_datetime(df.index)      sns.lineplot(df['timestamp'], df[key_word])        plt.title("Normalized Searches for {} in {}".format(key_word, state))      plt.ylabel("Number of Searches")      plt.xlabel("Date")

下面我們看看 NY, MA, CA:

get_searches('Coronavirus', 'NY')  get_searches('Coronavirus', 'MA')  get_searches('Coronavirus', 'CA')


我們可以提取其他州數據或者整個美國的數據。 也可以使用其他關鍵字輸入進行操作。 也許您想搜索“Coronavirus symptoms”(癥狀)或“Coronavirus mortality rate”(死亡率)。

總結

我們使用python庫“ pytrends”提取了與關鍵字“冠狀病毒”相對應的州級Google趨勢數據。 社交媒體數據(例如Google趨勢數據)可能對衡量與公眾健康相關主題(例如冠狀病毒)的社交參與度很有用。 這可以幫助疾病預防控制中心等衛生機構定量評估需求,分配資源並傳達預防措施。 我希望您發現這篇文章有用/有趣。

從曲線我們就能看到,雖然川普嘴上說不重視,但是美國民眾可不是這麼想的,大家在很早以前就已經非常重視了,並且在3月11日達到了峰值,當時正好是NBA球星米切爾和湯姆漢克斯感染所以美國民眾的關注度達到了高峰。

這裡是送的

最後再驗證下為什麼老外都喜歡屯廁紙?
有報道說:老外把冠狀病毒coronavirus和諾如病毒norovirus給混淆了,而諾如病毒引發的主要癥狀就是腹瀉,也沒有疫苗和特效藥物,那我們看下來老外對這個詞的關注程度吧:

看樣子還真是這樣的,這個關鍵詞熱度在11月以後飆升,基本增長的趨勢和冠狀病毒一樣,所以由此來看,真的和拼錯有一定的關係。