用可视化神器 Plotly 动态演示全球疫情变化趋势

R语言构建因子驱动型资产配置系统 资产配置是投资决策的核心环节,其本质在于科学权衡风险与收益的长期关系,而非预测短期股价波动。现代投资组合理论(MPT)和多因子模型(如Fama-French五因子)为这一过程提供了可验证的原理基础;通过因子暴露分析、多目标优化与帕累托前沿求解,能显著提升组合鲁棒性与决策透明度。在技术实现层面,R语言凭借quantmod、PerformanceAnalytics和PortfolioAnalytics等成熟生态,天然适配金融数据清洗、因子标准化与行业中性化、滚动回测及可视化归因等关键任务,尤其适合需要可复现、可 阅读详情

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

作者:Lemonbit

出品:Python数据之道

近期对疫情数据进行可视化的内容比较多,今天我来用 Python 可视化申请 Plotly 对国外的疫情发展情况进行可视化,以项目实战的形式,在分析和了解国外疫情变化趋势的同时,加深大家对 Plotly 的学习应用。

在开始之前,我们先来看看最终制作的部分效果图,如果你觉得有兴趣,不妨继续往下看。

数据来源

国内的疫情,目前已逐步受到控制,各项指标已开始明显好转,但国外的情况,看起来不是太乐观,已有的作业也没有抄好,所以,本次我们主要来可视化分析国外疫情的发展情况。

疫情的数据来源于开源项目 Akshare,由于使用该项目获取数据时,有时不太稳定,可能会遇到连接失败的情况,所以,这里我提供了保存好的数据供大家使用。

准备工作

照例,还是先介绍下我运行的环境

  • Mac 系统

  • Anaconda(Python 3.7)

  • Jupyter Notebook

本次使用到的 Python 库包括 akshare, pandas, plotly 等,导入如下:

import akshare as ak
import pandas as pd
import plotly
from plotly.offline import iplot, init_notebook_mode
import plotly.express as px
from datetime import datetime
init_notebook_mode()

接着,我们读取已获得的数据,已保存的数据是截至3月7日的。

# 从 akshare 获取数据
# df_all_history = ak.epidemic_history()
# 从csv文件获取数据
df_all_history = pd.read_csv('epidemic_all_20200307.csv',index_col=0)
df_all_history

从上面获取的数据,有些数据格式需要加以调整,对于日期,我们这里会组织两列数据,一列是时间格式的日期( ['date']),一列是字符串格式的日期 ( ['dates'])。这样设置的原因,是因为我们后续分别需要用到这两种格式的日期。

df_all = df_all_history
# 将字符串格式的日期 另保存为一列
df_all['dates'] = df_all_history['date']
# 将字符串格式的日期转换为 日期格式
df_all['date'] = pd.to_datetime(df_all['date'])

获取国外的疫情数据

上面的数据,是全球的数据,我们可以把其中属于中国的剔除,就可以得到国外的数据了。

# 国外,按国家统计
df_oversea = df_all.query("country!='中国'")
df_oversea.fillna(value="", inplace=True)
df_oversea

先来用 plotly express 看下国外疫情分国家的整体走势。

fig_oversea = px.line(df_oversea, x='dates', y='confirmed',
                      line_group='country',
                      color='country',
                      color_discrete_sequence=px.colors.qualitative.D3,
                      hover_name='country',
)
fig_oversea.show()

从上图可以看出,国外的疫情发展情况,大部分国家从2月10日期,发展趋势较为明显,因此,后面我们重点分析这段时间之后的情况。

# 现有数据演示从 2020年2月10日开始
df_oversea_recent = df_oversea.set_index('date')
df_oversea_recent = df_oversea_recent['2020-02-10':]
df_oversea_recent

由于部分国家的数据不是从2020年2月10日开始记录的,所以要补充数据。我们可以手动新建一个 excel数据表,将补充日期的数值填充为 0 。

我这里主要补充的是伊朗的数据,因为伊朗实在是发展太快了,必须纳入分析的范围内。其他国家,如果有需要补充的,后续可以继续完善。

# 由于部分国家,数据不是从2020年2月10日开始的,所以要补充数据,数值为 0
# 数据在 excel 表格中进行补充,这里进行读取
df_oversea_buchong = pd.read_excel('epidemic_buchong.xlsx')
df_oversea_buchong['dates'] = df_oversea_buchong['date'].apply(lambda x:x.strftime('%Y-%m-%d'))
df_oversea_buchong.set_index('date', inplace=True)
df_oversea_buchong.fillna(value="", inplace=True)
print(df_oversea_buchong.info())
df_oversea_buchong

将需要补充的数据弄好后,我们可以合并上面这两部分数据,一起进行分析。

# 合并补充数据
df_oversea_recent_new = df_oversea_recent.append(df_oversea_buchong)
df_oversea_recent_new.sort_index(inplace=True)
df_oversea_recent_new

得到合并的数据后,首先,我们用气泡图来对变化情况进行可视化,这里用的是 plotly express 的散点图。

plotly express 现在已经合并到 plotly 中,个人觉得跟 plotly 原生内容的协同性相对 cufflinks 要好用点。

# -*- coding: utf-8 -*-
"""
@Author: Lemonbit
@出品:Python数据之道
@Homepage: liyangbit.com
"""
fig_oversea_recent = px.scatter(df_oversea_recent_new, x='dead', y='confirmed',
                                size='confirmed', text='country', color='country',
                                color_discrete_sequence=px.colors.qualitative.Light24,
                                animation_frame='dates',animation_group='country',
                                hover_name='country',
                                range_x=[-10,260],
                                range_y=[0,8000],
                                size_max=50,
                                template='plotly_white',
)
fig_oversea_recent.show()

从上面这个动态图可以清晰的看出,当前,在海外的国家中,韩国、伊朗、意大利三个国家最为严重。这三个国家中,就增长趋势而言,伊朗和意大利又比韩国要更明显,目前韩国的增长有所放缓,而伊朗和意大利还处于快速增长的过程中,后续情况不容乐观。

此外,在这个图中,另外还有几个国家值得关注,日本,除去钻石号之外,从数据来看,本土的增长目前还算是在稍微较好的范围内。反倒是,德国、法国、西班牙,个人觉得已成逐步壮大之势,不得不防。

而且,由于整个欧盟国家之间,人员是自由流通的,现在看来,整个欧盟很可能会成为疫情的重灾区,其影响巨大。

上图左下角的这些国家的走势,我们可以拉近来看,走势如下,这样,对于 德国、法国、西班牙就会看的更明显了。

这里,还有一个国家,就是美国,虽然从数据以及增长情况来看,好像美国还好,但恐怕实际情况,要糟糕很多。

上面是以气泡图的方式来演示变化过程,我们也可以以柱状图的形式来演示,效果如下:

关于上面的效果图,各位可以自行研究下,欢迎交流。

需要说明的是,本文代码是在 Jupyter Notebook 中运行的, 如果是在 PyCharm 等 IDE 中运行,需要稍微修改下代码。

最后,再次感谢开源项目 Akshare 提供了数据接口。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~
题图:pexels,CC0 授权。

好文章,我在看❤️

代谢组数据分析(二十二):代谢组原始数据Zscore标准化和主成分分析(PCA)及热图 本教程介绍了使用Z-score标准化和主成分分析(PCA)进行代谢组学数据预处理和分析的方法。代谢物原始数据具有高噪声、高维小样本、高变异性和复杂相互作用关系等特点,因此在数据分析时需注意数据质量控制、参数选择、批次效应、假阳性控制等问题。Z-score标准化通过将数据转换为均值为0、标准差为1的标准正态分布,提高了数据的可比性,减少了系统误差,并适应了统计分析方法的需求。PCA则通过降维、去相关和特征提取,帮助理解数据的结构和模式。教程还详细介绍了数据预处理步骤,包括填补缺失值、设置名称和顺序等,并提供了 阅读详情

相关推荐

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 双机位C卷 200分)

这个问题要求模拟打印机的文件调度过程,关键在于正确处理每个打印机队列中的文件优先级和文件进入队列的顺序。优先级处理:每个文件有一个 1 到 10 的优先级,数字越大优先级越高,打印机应首先处理优先级最高的文件。在打印机 1 的队列中插入了 3 个文件,分别有不同的优先级,其中编号 3 的文件优先级最高,先被取出。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10 不同的 优先级,其中数字越大优先级越高。在打印机 2 的队列中插入了 1 个文件,优先级为 1,因此它被首先取出。

学Java,找哪吒 1055

用 Python可视化神器 Plotly 动态演示全球疫情变化趋势

作者:Lemonbit出品:Python数据之道用 Python可视化神器 Plotly动态演示全球疫情变化趋势各位同学早上好,我是 Lemonbit 。近期对疫情数据进行可视化的内容...

Python数据之道 5743

批量二维码 条形码 生成器 软件工具 动态二维码背景

可离线快速批量生成二维码、条形码 可指定图案和背景颜色,支持随机颜色,让二维码更加丰富 数据信息可从文本文件读取,按行方式批量生成二维码、条形码 数据信息还支持从Excel 中读取,分普通和高级两种模式,高级模式适用于多参数的数据信息 支持标准、中心图标、静太背景二维码和动态背景二维码,还有10种常见的条形码和 DataMatrix 二维码 可生成 Excel 的日志文件,即二维码报表,可选自动嵌入生成的二维码图(支持动图) 提供二维码命名规则,可以为自定义表达式、与数据一致,甚至可以从 Excel 中调取数据命名 可预选多张图片并按不同模式进行选择生成二维码,即可一次性生成不同背景/中心图标的二维码图

Python动态可视化Plotly

Python动态可视化Plotly

weixin_39559994的博客 1044

python的plot如何实时更新_python plotly 使用教程

1、plotly介绍lotly的Python图形库使互动的出版质量图表成为在线。 如何制作线图,散点图,面积图,条形图,误差线,箱形图,直方图,热图,子图,多轴,极坐标图和气泡图的示例。推荐最好使用jupyter notebook,使用pycharm的话不是很方便。2、安装pip install plotly2、使用1)在线使用在setting里找到用户名和api keyimage.png##在线...

weixin_39770165的博客 1716

Python数据可视化教程:基于Plotly动态可视化绘图

1. plotly 介绍 Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息,可创建多达数十种精美的图表和地图, 下面我们以jupyter notebook为开发工具数据分析。Matplotlib存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化中的发展。为了解决这个问题,新型的动态可视化开源模块Plotly应运而生...

艾文 7万+

第二章 【数据分析师---数据可视化3】 Plotly绘图进阶篇(地图和动态图的绘制)

数据分析可视化---Plotly进阶篇第一节 地图的绘制1.使用choropleth绘制地图信息软件安装2.使用geojson功能绘制地理区域3.使用choroplethmapbox绘制漂亮的地图 第一节 地图的绘制 1.使用choropleth绘制地图信息 软件安装 安装组件 !pip install GDAL-3.1.4-cp37-cp37m-win_amd64.whl Shapely-1.7.1-cp37-cp37m-win_amd64.whl Fiona-1.8.18-cp37-cp37m-win_

xiaomei920528的博客 1660

使用 Python可视化神器 Plotly 动态演示全球疫情变化趋势

数据来源 疫情的数据来源于开源项目 Akshare。 准备工作 运行环境: Windows 10系统 Anaconda(Python 3.7) Jupyter Notebook 本次使用到的Python库: akshare, pandas, plotly 数据导入 import akshare as ak import pandas as pd import plotly from plotl...

YINUXY'S BLOG 3017

用 Python 可视化神器 Plotly 动态演示全球疫情变化趋势

“ 阅读本文大概需要 9 分钟。 ”大家好,今天转载的这一篇是借助 Plotly 工具来演示全球疫情变化趋势,同时该技能在日常的报表制作中也十分实用。...

静觅 719

用 Python可视化神器 Plotly 动态演示全球疫情变化趋势

用 Python可视化神器 Plotly 动态演示全球疫情变化趋势 各位同学早上好,我是 Lemonbit 。 近期对疫情数据进行可视化的内容比较多,今天我来用 Python 可视化申请 Plotly 对国外的疫情发展情况进行可视化,以项目实战的形式,在分析和了解国外疫情变化趋势的同时,加深大家对 Plotly 的学习应用。 在开始之前,我们先来看看最终制作的部分效果图,如果你觉得有兴趣...

爬遍所有网站 643

用 Python 动态曲线图来对全球疫情进行演示

作者:Lemon出品:Python数据之道用 Python 动态曲线图来对全球疫情进行演示各位同学好,我是 Lemon 。最近一段时间,我写了几篇用 P...

Python数据之道 7241

Plotly 动态柱状图来演示全球疫情变化趋势 | 付费阅读文章处女作

Plotly 动态柱状图来演示全球疫情变化趋势各位同学早上好,我是 Lemonbit 。终于收到付费阅读的邀请了,今天发点技术类的干货,这篇文章后面需要付费阅读,收费就象征性的吧,看...

Python数据之道 2550

超火动态排序疫情变化图,这次我们用 Plotly来绘制

超火动态排序疫情变化图,这次我们用 Plotly来绘制各位同学早上好,我是 Lemonbit 。国内的疫情基本进入扫尾阶段了,但国外疫情还处于爆发的高峰...

Python数据之道 4294

升级版,用Python来进行多条曲线动态演示全球疫情变化

作者:Lemon出品:Python数据之道用 Python 动态曲线图来对全球疫情进行演示大家好,我是 Lemon 。最近一段时间,我写了几篇用 Python 的交互式可视化工具 Pl...

Oner.wv的专栏 1128

Plotly中4种文本类型设置详解

作者:Lemon来源:Python数据之道Plotly中4种文本类型设置详解大家好,我是 Lemon 。在过去的一段时间里,我写了几篇用 Python 的交互式可视化工具 Plotly ...

Python数据之道 6423

当Sklearn遇上Plotly,会擦出怎样的火花?

来源:数据STUDIO大家好,我是阳哥。关于Plotly,我在「Python数据之道」已经分享过不少内容,有兴趣的同学可以前往阅读:在 Pycharm 等编辑器下使用 Python 可视化...

Python数据之道 710
上一篇: pip install 今年将出现重大变化!
下一篇: 很冷门,但非常实用的 Python 库
codingpy
博客等级 码龄11年 1745粉丝 104原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值