用python pandas 分析新冠数据教程1

之前说到过,和同事们做了一个免费开源的新冠数据访问接口项目: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  

Anaconda 5.0 版本发布

今天才注意到,原来 Anaconda 5.0 已经发布了:

We’re thrilled to announce the release of Anaconda Distribution 5.0! With over 4.5 million active users, Anaconda Distribution is the world’s most popular and trusted distribution for data science. It allows you to easily install 1,000+ Python and R data science packages and manage your packages, dependencies, and environments—all with the single click of a button.

作为 Python 开发最强的第三方包管理以及综合增强工具,Anaconda 下载已经有了四百五十万活跃用户。

可以用下面的办法来安装和升级 Anaconda:

You can now download and install Anaconda Distribution 5.0, or update your current Anaconda Distribution installation to version 5.0 by using conda update conda followed by conda install anaconda=5.0 .

Anaconda 5.0有以下的主要功能:

  • Over 100 packages have been updated or added to the distribution. JupyterLab alpha preview 0.27.0 is now included, and MKL has been updated to 2018.0.0.
  • The new version features all new compilers on macOS and Linux, providing substantial security and performance improvements.
  • Where possible, all build recipes are now using conda-forge as a base, via https://github.com/AnacondaRecipes.
  • A new channel, pkgs/main, has been added to defaults. The new channel is given top priority within defaultsand holds packages built with the new compiler stack.
  • The new version of Anaconda Distribution now features more flexible dependency pinning of NumPy packages, providing wider ranges of compatibility.

看来这次大版本号的更新还是有不少东西的,JupyterLab alpha 不知道使用起来到底怎么样。