在传染病研究领域, 社交媒体数据已被证明可作为预测感冒和流感季节的发作和进展的指标. 在本文中, 我们将使用 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"(死亡率).
总结
来源: https://www.cnblogs.com/deephub/p/12510336.html