[数据科学]001.新冠病毒全球疫情-数据可视化-plotly-完整详尽教程

-1 关于plotly 的小问题

因为plotly用着还不熟练,我把我遇到的一些plotly调用问题总结了一下:

0. 前言:

疫情期间,工作‘过于‘繁忙。。。教程早已编好,文稿却没更出来。。。
(伪)鲁迅曾经说过:所有的数据都应该被‘画’出来,而不是‘写’出来。

自接触数据科学起,我就异常热衷于’画‘出更好的数据图(逼死强迫症)。作为一个曾经的通信人,Matlab告诉我,不能交互的数据图永远不算完美。什么matplotlib,seaborn,甚至ggplot。我只想说,普通。。。直到 plotly出现。

1. plotly介绍

plotly官方文档: https://plotly.com/python

plotly是一个可交互的 开源 开源 开源 python数据可视化库。在顶层通过 JavaScript(plotly.js)库生成web-based 可视化图表。
(可以直接生成网页,还能集成在jupyter-notebook | jupyter-lab(需要额外插件)| VS code 中直接显示)
另外,plotly 作为python 数据生态中的重要一环,也创建了相应的网页数据报表 – Dash ,对标R shiny,Tableau,MS PowerBI(后两个为商业软件,集成环境更优秀,而且价格也挺贵。。。)
plotly-Dash 界面

当然, plotly & Dash也分为开源版本商用版本, 并且4.0版本之前都可以使用online/offline 两种模式。其中online模式需要注册账号, 上传的图表可以使用Chart Studio对细节进行更改。 4.0之后的版本已经将online模式彻底移植到 chart-studio 中,

  • 开源版本一切免费,证书为github上的开源证书 – MIT license,No Technical Supports!!(除了bug自己调试 或者等待在下个版本解决)
  • 商用版本各种服务收费,还能使用有UI界面的Chart Studio修图。价格嘛,详情需要自己咨询。。。

1.1 安装

pip 和conda 都可以直接安装, 截止到目前为止 最新版本为 4.6.0 (plotly >=4.0.0 只有offline 模式

pip install plotly==4.6.0

考虑到各个packages 的版本依赖关系, 更推荐通过conda安装

conda install -c plotly plotly==4.6.0

我一直用jupyter-lab, 额外的extensions安装如下 (jupyter 安装extensions 需要提前安装 node.js。。。):

conda install jupyterlab
conda install ipywidgets
jupyter labextension install @jupyter-widgets/[email protected] --no-build
jupyter labextension install [email protected] --no-build
jupyter labextension install [email protected] --no-build
jupyter lab build

1.2 plotly 子模块

在最开始使用plotly的时候,我唯一的一个疑问就是,搞不清楚什么时候使用什么模块。为此,特意去研究了一下官方提供的API教程。

plotly分为 5个重要子模块:

  • express 模块:高级画图API,类似seaborn,可以用简单的代码,通过读取dataframe,画出相对复杂的分布曲线,kde曲线。
  • graph_objects 模块: 底层画图API, 类似 matplotlib.pyplot, 可以精确控制图像中的每一个变量,图像figure的大小,图像布局,曲线的粗细,点击曲线后显示的信息,etc。但是 每一个变量都需要用户自主声明。
  • subplots 模块:用于创建多图布局 类似 pyplot 中的subplots
  • figure_factory 模块: 用于创建特定复杂的图表
  • io模块: input/output模块 用于读取/生成 各种格式的图表 (HTML, json, images, etc…)

2. 数据可视化:

数据来源: 约翰霍普金森大学 - 新冠病毒全球感染人数 - Github 开源数据

编程环境:

  • Python version = 3.8
  • jupyter-lab version = 1.2.6
  • plotly version = 4.6.0
  • numpy version = 1.18.1
  • pandas version = 1.0.3
  • cufflinks version = 0.17.3

2.1 读取数据

# import basic libs
import os 
import pandas as pd
import numpy as np

# 直接从github读取数据
df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/web-data/data/cases_time.csv', error_bad_lines=False )
df.loc[:,'Last_Update'] = pd.to_datetime(df.loc[:,'Last_Update'], format='%m/%d/%y')
print(df.shape) # output: (21384, 16) 

# 国家/城市坐标 & 人口数据
location_lookup_table = pd
  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
26, -18518, -18501, -18490, -18478, -18463, -18448, -18447以下是一个使用Python实现新冠疫情数据采集及可视化的示例代码: 1. 数据采集部, -18446, -18239, -18237, -18231, -18220, -18211, -18201分: ```python import requests import json import pandas as pd # 获取全球新冠疫情数据 url = ', -18184, -18183, -18181, -18012, -17997, -17988, -17970, https://covid-api.mmediagroup.fr/v1/cases' response = requests.get(url) data = json.loads(response.text) # -17964, -17961, -17950, -17947, -17931, -17928, -17922, 整理数据 df = pd.DataFrame(data).transpose() df = df[['All', 'abbreviation']] df = df.rename(columns={'All': -17759, -17752, -17733, -17730, -17721, -17703, -17701, 'data', 'abbreviation': 'country'}) df.index.name = 'date' df.to_csv('global_covid_data.csv') ``` 2 -17697, -17692, -17683, -17676, -17496, -17487, -17482, -. 数据可视化部分: ```python import pandas as pd import matplotlib.pyplot as plt # 读取数据 df17468, -17454, -17433, -17427, -17417, -17202, -17185, - = pd.read_csv('global_covid_data.csv', index_col='date', parse_dates=True) # 绘制全球确诊人数16983, -16970, -16942, -16915, -16733, -16708, -16706, -趋势图 fig, ax = plt.subplots(figsize=(10, 6)) df['data'].plot(ax=ax) ax.set_title('16689, -16664, -16657, -16647, -16474, -16470, -16465, -164Global COVID-19 Cases') ax.set_xlabel('Date') ax.set_ylabel('Confirmed Cases') plt.show() # 绘制各国确诊59, -16452, -16448, -16433, -16429, -16427, -16423, -164人数地图 import plotly.express as px fig = px.choropleth(df, locations='country', color='data', hover_name='country', animation_frame=df.index, projection='natural earth') fig.show() ``` 这段代码实现19, -16412, -16407, -16403, -16401, -16393, -16220, -162了从一个API接口获取全球新冠疫情数据,并将数据存储为CSV文件,然后使用Matplotlib绘16, -16212, -16205, -16202, -16187, -16180, -16171, -16169制全球确诊人数趋势图,并使用Plotly绘制各国确诊人数地图。当然,这, -16158, -16155, -15959, -15958, -15944, -15933, -15920, -15915, -15903, -15889, -15878, -15707, -15701, -15681只是一个简单的示例,实际的数据采集和可视化过程可能会更加复杂和细致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值