Python疫情数据可视化分析
作者:谢谢大家我爱小谢 发布时间:2022-05-22 05:09:15
标签:Python,疫情,数据,可视化,分析
前言
本项目主要通过python的matplotlib pandas pyecharts等库对疫情数据进行可视化分析
数据来源:
本数据集来源于kaggle竞赛的开源数据集,数据集地址
本数据集主要涉及到全球疫情统计,包括确诊、治愈、死亡、时间、国家、地区等信息
功能函数
读取文件
df = pd.read_csv(r'C:\Users\Hasee\Desktop/covid_19_data.csv')
df.head()
更换列名,便于查看
cols= ['序号','日期','省/州','国家','最近更新','确诊','死亡','治愈']
df.columns = cols
df.日期 = pd.to_datetime(df.日期)
df
## 利用groupby按照日期统计确诊死亡治愈病例的总和
#合并同一天同国家日期
global_confirm = df.groupby('日期')[['确诊', '死亡', '治愈']].sum()
global_confirm
全球疫情趋势
ax = global_confirm.plot(figsize = (12,10), title = '全球疫情趋势图')
筛选出中国的数据
利用groupby按照日期统计确诊死亡治愈病例的总和
global_china = df[df['国家'] == 'Mainland China'].reset_index()
global_china_confirm = global_china.groupby('日期')[['确诊', '死亡', '治愈']].sum().reset_index()
画图,三条线组合到一个图
利用groupby按照省统计确诊死亡治愈病例的总和
global_china = df[df['国家'] == 'Mainland China'].reset_index()
global_china_province_confirm = global_china.groupby('省/州')[['确诊', '死亡', '治愈']].sum().reset_index()
recovercent = 100.*global_china_province_confirm['治愈'] / global_china_province_confirm['治愈'].sum()
labels = ['{0}-{1:1.2f}%-{2}'.format(i,j,k) for i,j,k in zip(list(global_china_province_confirm['省/州']), recovercent, list(global_china_province_confirm['治愈']))]
plt.figure(figsize=(10,10))
plt.pie(global_china_province_confirm['治愈'],radius = 0.3)
确诊人数排名前15的国家
plt.figure(figsize=(16,16))
plt.barh(list(global_country_confirm_rank.国家)[::-1], list(global_country_confirm_rank.确诊)[::-1])
plt.title('确诊人数排名前15的国家')
plt.xlabel('人数(千万)')
plt.ylabel('国家')
这里用pyecharts库画图,绘制的玫瑰图,rosetype
set_global_opts是设置格式:
中国确诊人数前十的省
china_confirm = df[df['国家'] == "Mainland China"]
china_latest = china_confirm[china_confirm['日期'] == max(china_confirm['日期'])]
words = WordCloud()
words.add('确诊人数', [tuple(dic) for dic in zip(list(china_latest['省/州']),list(china_latest['确诊']))], word_size_range=[20,100])
区域图
china_death = df[df['国家'] == "Mainland China"]
china_death_latest = china_death[china_death['日期'] == max(china_death['日期'])]
china_death_latest = china_death_latest.groupby('省/州')[['确诊', '死亡']].max().reset_index()
geo = Map()
geo.add("中国死亡病例分布", [list(z) for z in zip(china_death_prodic,list(china_death_latest['死亡']))], "china")
geo.set_global_opts(title_opts=opts.TitleOpts(title="全国各省死亡病例数据分布"),visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
{"min": 1500, "label": '>10000人', "color": "#6F171F"},
{"min": 500, "max": 15000, "label": '500-1000人', "color": "#C92C34"},
{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},
{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},
{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}]))
geo.render_notebook()
热力图
geo = Geo()
geo.add_schema(maptype="china")
geo.add("中国死亡病例分布", [list(dic) for dic in zip(china_death_prodic,list(china_death_latest['死亡']))],type_=GeoType.EFFECT_SCATTER)
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title="全国各省死亡病例数据分布"))
geo.render_notebook()
全球死亡人数地理分布情况
map = Map()
map.set_global_opts(title_opts=opts.TitleOpts(title="全球死亡人数地理分布情况"),visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
{"min": 100001, "label": '>100001人', "color": "#6F171F"},
{"min": 10001, "max": 100000, "label": '10001-100000人', "color": "#C92C34"},
{"min": 1001, "max": 10000, "label": '1001-10000人', "color": "#E35B52"},
{"min": 101, "max": 10000, "label": '101-10000人', "color": "#F39E86"},
{"min": 1, "max": 100, "label": '1-100人', "color": "#FDEBD0"}]))
map.add("全球死亡人数地理分布情况", [list(z) for z in zip(global_death_n,list(global_death['死亡']))], "world")
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
map.render_notebook()
全球疫情频率直方图
global_confirm.plot.hist(alpha=0.5)
plt.xlabel('人数(千万)')
plt.ylabel('出现频率')
plt.title('全球疫情频率直方图')
其他图
陕西确诊病例饼图
陕西省确诊病例数据分布
中国治愈病例玫瑰图
来源:https://blog.csdn.net/Dummy_/article/details/125672826
0
投稿
猜你喜欢
- 使用echart卡在引入包的问题上了。到github下载的js一直引入不了。注意是引入dirt文件夹下的echarts.js把这个文件夹放入
- 在access中进行时间的比较sql语句很简单,如select * from table where thetime>#\"
- 前几天有个人退群了。起因很简单,他问了一个问题,没人回答,于是说要退群,后来我看到了,给了个链接,说这个问题已经说过好多遍了,于是他就退了。
- 代码如下:ALTER function [dbo].[GetOrderNum]( @ebaystockflag varchar(20)//规
- 目录总体思路:判断链接是否指向文件:下载文件:获取 url 下的所有链接:最近维基 jie mi 彻底公开了网站的全部文件,我就在想如何使用
- © 版权符号显示不清楚,就是那个圈C,在某些网站上就是显示太小,看不清楚。一开始还以为是字体大小的原因,调大以后,还是一样
- javascript动画效果 打开层/关闭层:运行代码框<!DOCTYPE html PUBLIC "-//W3C//DTD
- 先看一段HTML代码,在下边这段代码中,这张图片的宽度未知,我想写在CSS中写一行限制最大宽度为50px:<div id=&
- Float(浮动)概念也许是CSS中最让人迷惑的一个概念吧。Float经常被错误理解,而且因为将上下文元素全部浮动导致的可读性、
- 前言你可能不需要经常处理分数,但当你需要时,Python的Fraction类会给你很大的帮助。本文将给大家详细介绍关于利用标准库fracti
- 对数据库的管理常规就是进行预防性的维护,以及修复那些出现问题的内容。进行检查和修复通常具有四个主要的任务:1. 对表进行优化2. 对表进行分
- 删除一,你可以先把类型为varchar的字段该名,再加以个字段为要该为date的字段名相同,二,1,测试表create table TEST
- 本文实例讲述了python将ip地址转换成整数的方法。分享给大家供大家参考。具体分析如下:有时候我们用数据库存储ip地址时可以将ip地址转换
- 家里没网络,实在无聊,玩游戏都没味道,只好玩CSS。这个东西实在没什么技术含量在里面,纯属打发时间。简单说明:一张图片放在底层,
- MySQL Order By keyword是用来给记录中的数据进行分类的。MySQL Order By Keyword根据关键词分类ORD
- 本文实例讲述了原生JS实现Ajax通过POST方式与PHP进行交互的方法。分享给大家供大家参考,具体如下:一、代码conn.php<?
- 在multiIndex中选定指定索引的行我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个ind
- 可以采用exec方法注意:使exec不能返回一些变量的值,而且当前的变量值在exec的语句里无效。declare @tempStr
- 你是不是觉得每次新建项目都要写一次# coding:utf-8,感觉特烦人呐!懒(fu)人(li)教程来啦,先看效果图吧中文版如图进入设置然
- xhtml+css页面制作过程中问题的解决方案,说是解决方案应该有点过了,充其量只不过是给刚刚开始学标准页面制作的朋友们的一些小建议,如果讲