之前说到过,和同事们做了一个免费开源的新冠数据访问接口项目:COVID-19-Data-API。今天开始我们用 Python 、jupyter notebook、pandas等来进行数据分析的一个教程。
疫情过后,有人说剩下来的都是数字化的企业了,数据分析能力也已经是一项必备技能了,有太多的工具可以进行数据分析,前几年可能excel 还是很多人认为最有效的数据分析工具,现在可以选择面太广了,免费工具里面,Python+pandas 肯定还是最佳选择之一。准备一套完整的 Python 的入门教材+Python数据分析教程,并且用现在时髦的视频方式录制。所以先准备好教材。
下面的代码从接口处获得数据,经过简单的整理,输出。
具体来说,是获得意大利在2020年3月24日的疫情感染数据。
1 设置API的地址,调用token
2 设置headers、payload等需要调用的参数
3 通过 requests 的 get 方法来访问数据
4 通过 pandas 来简单处理数据
5 显示数据
# demo for infection/region
# input region, start_date, get data
# 接口:感染/国家地区
import requests
import pandas as pd
# API url
url = 'https://covid-19.adapay.tech/api/v1/'
# token, can call register function get the API token
token = '497115d0c2ff9586bf0fe03088cfdbe2'
# region or country
region='Italy'
# headers, need the API token
headers = {
'token': token
}
# the params
payload = {
'region': region,
'start_date':'2020-03-24'
}
# call requets to load
r = requests.get(url+'infection/region', params=payload, headers=headers)
data = r.json()
# use pandas to get the data
df = pd.DataFrame.from_dict(data['data']['region'][region])
print(df)
print('---')
通过requests 获得数据,然后pandas 整理。输出结果如下:
2020-03-24
confirmed 69176
confirmed_add 5249
deaths 6820
deaths_add 743
recovered 8326
recovered_add 894
即便你对Python不太懂,或者一知半解,相信看到上面的代码也能够猜的七七八八,Python的可读性非常好。
要运行上面代码,最简单的方式是通过 jupyter-notebook,然后推荐下载安装 anaconda,最强的 Python 扩展程序,下载安装 anaconda 之后,直接运行 jupyter-notebook,就可以在notebook 里面的 cell 单元格中输入上面的代码。 已经有很多教程关于怎么使用 Python 下的 jupyter-notebook,可以先网上搜索一下,这里就不赘述了。
下面的例子读取一段时间范围内的数据,并对行列进行交换,便于分析和制图。基础代码延续之前的例子,所以要在上面运行的基础上继续。
# demo for infection/region
# input region, start_date, end_date, get data
# the params
payload = {
'region': region,
'start_date': '2020-03-24',
'end_date': '2020-03-31'
}
# call requets to load
r = requests.get(url+'infection/region', params=payload, headers=headers)
data = r.json()
# use pandas to get the data
df = pd.DataFrame.from_dict(data['data']['region'][region])
print(df)
print('---')
我们可以得到下面的结果:
2020-03-24 2020-03-25 2020-03-26 2020-03-27 2020-03-28 \
confirmed_add 5249 5210 6203 5909 5974
deaths_add 743 683 712 919 889
recovered_add 894 1036 999 589 1434
confirmed 69176 74386 80589 86498 92472
deaths 6820 7503 8215 9134 10023
recovered 8326 9362 10361 10950 12384
2020-03-29 2020-03-30 2020-03-31
confirmed_add 5217 4050 4053
deaths_add 756 812 837
recovered_add 646 1590 1109
confirmed 97689 101739 105792
deaths 10779 11591 12428
recovered 13030 14620 15729
我们把日期和确证等交换一下行列,便于制图
# demo for infection/region
# input region, start_date, end_date, get data
# exchange the row and column by Pandas, the row index is date
# 交换数据的行和列
df = df.T
print(df)
print('---')
可以得到下面的结果:
confirmed_add deaths_add recovered_add confirmed deaths \
2020-03-24 5249 743 894 69176 6820
2020-03-25 5210 683 1036 74386 7503
2020-03-26 6203 712 999 80589 8215
2020-03-27 5909 919 589 86498 9134
2020-03-28 5974 889 1434 92472 10023
2020-03-29 5217 756 646 97689 10779
2020-03-30 4050 812 1590 101739 11591
2020-03-31 4053 837 1109 105792 12428
recovered
2020-03-24 8326
2020-03-25 9362
2020-03-26 10361
2020-03-27 10950
2020-03-28 12384
2020-03-29 13030
2020-03-30 14620
2020-03-31 15729