欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度

程序员文章站 2022-03-25 17:54:09
在传染病研究领域,社交媒体数据已被证明可作为预测感冒和流感季节的发作和进展的指标。在本文中,我们将使用Google Trends API来衡量与冠状病毒的状态。我们将使用python谷歌趋势API pytrends在州一级分析google搜索“冠状病毒”。 安装依赖 要安装pytrends,请打开命 ......

在传染病研究领域,社交媒体数据已被证明可作为预测感冒和流感季节的发作和进展的指标。在本文中,我们将使用google trends api来衡量与冠状病毒的状态。我们将使用python谷歌趋势api pytrends在州一级分析google搜索“冠状病毒”。
数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度

安装依赖

要安装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())

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度
我们还可以使用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")

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度
让我们对马萨诸塞州的“冠状病毒”做同样的事情:

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度

封装成函数

我们可以定义一个函数,使我们可以为任何周提取此数据:

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')

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度
我们可以提取其他州数据或者整个美国的数据。 也可以使用其他关键字输入进行操作。 也许您想搜索“coronavirus symptoms”(症状)或“coronavirus mortality rate”(死亡率)。

总结

我们使用python库“ pytrends”提取了与关键字“冠状病毒”相对应的州级google趋势数据。 社交媒体数据(例如google趋势数据)可能对衡量与公众健康相关主题(例如冠状病毒)的社交参与度很有用。 这可以帮助疾病预防控制中心等卫生机构定量评估需求,分配资源并传达预防措施。 我希望您发现这篇文章有用/有趣。

从曲线我们就能看到,虽然川普嘴上说不重视,但是美国民众可不是这么想的,大家在很早以前就已经非常重视了,并且在3月11日达到了峰值,当时正好是nba球星米切尔和汤姆汉克斯感染所以美国民众的关注度达到了高峰。

这里是送的

最后再验证下为什么老外都喜欢屯厕纸?
有报道说:老外把冠状病毒coronavirus和诺如病毒norovirus给混淆了,而诺如病毒引发的主要症状就是腹泻,也没有疫苗和特效药物,那我们看下来老外对这个词的关注程度吧:

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度

看样子还真是这样的,这个关键词热度在11月以后飙升,基本增长的趋势和冠状病毒一样,所以由此来看,真的和拼错有一定的关系。

数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度