程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

荐一次网红视频的尝试——racing bar可视化视频制作记录(python代码)

发布于2020-03-18 13:17     阅读(1745)     评论(0)     点赞(3)     收藏(0)


每个人心中都有一个成为网红,一夜暴富的想法。那一夜,,,,
我看到了这么个视频在这里插入图片描述
想制作类似的视频,然后分分分钟月入百万,,,,

因此:

目标

  1. 爬取各省份疫情数据
  2. 制作各省疫情动态可视化视频

最终成品类似
在这里插入图片描述

实施

1. 获取各省疫情变化数据

这里并没有直接去爬取各省卫健委数据,而是直接使用现成的数据集。直接使用2019新型冠状病毒疫情实时爬虫所公开的数据获取接口,该数据包括各省疫情变化数据,满足我们的要求。
主要利用了几个接口:

/nCoV/api/provinceName 获取各个省份名称
/nCoV/api/area 获取各省疫情变化趋势

具体代码比较简单就直接贴上来

import requests
import pickle

provinces = ['上海市', '云南省', '内蒙古自治区', '北京市', '台湾', '吉林省', '四川省', '天津市', '宁夏回族自治区', '安徽省', '山东省', '山西省', '广东省', '广西壮族自治区',
             '新疆维吾尔自治区', '江苏省', '江西省', '河北省', '河南省', '浙江省', '海南省', '湖北省', '湖南省', '澳门', '甘肃省', '福建省', '西藏自治区', '贵州省',
             '辽宁省', '重庆市', '陕西省', '青海省', '香港', '黑龙江省']


def get_raw_data(province):
    """获取各个省份疫情原始数据"""
    print('正在获取 %s 的数据' % (province))
    url = 'https://lab.isaaclin.cn/nCoV/api/area'
    params = {'latest': 0, 'province': province}
    r = requests.get(url, params=params)
    fileurl = r.json()['results'][0]['statisticsData']

    r = requests.get(fileurl)
    data = r.json()['data']
    return data


data = []
for province in provinces:
    pdata = get_raw_data(province)
    data.append([province, pdata])

# # 保存,之后不用再次请求接口
# with open('data.pkl', 'wb') as f:
#     pickle.dump(data, f)
# with open('data.pkl', 'rb') as f:
#     data = pickle.load(f)

# 各个省份疫情统计时间不一致,这里简单统一一下
dates = [20200120, 20200121, 20200122, 20200123, 20200124, 20200125, 20200126, 20200127, 20200128, 20200129, 20200130,
         20200131, 20200201, 20200202, 20200203, 20200204, 20200205, 20200206, 20200207, 20200208, 20200209, 20200210,
         20200211, 20200212, 20200213, 20200214, 20200215, 20200216, 20200217, 20200218, 20200219, 20200220, 20200221,
         20200222, 20200223, 20200224, 20200225, 20200226, 20200227, 20200228, 20200229, 20200301, 20200302, 20200303,
         20200304, 20200305, 20200306, 20200307, 20200308, 20200309, 20200310, 20200311, 20200312, 20200313]


def handle(pdata):
    # 处理各个省份的数据为时间序列
    res = dict()
    for item in pdata:
        num = item['currentConfirmedCount']
        date = item['dateId']
        res[date] = num
    return res


with open('out.csv', 'w') as f:
    f.write('省份,Category,' + ','.join(map(lambda x: str(x)[4:], dates)) + '\n')
    for i, [province, pdata] in enumerate(data):
        f.write(province + ',' + str(i + 1) + ',')
        pdata = handle(pdata)
        f.write(','.join(map(str, [pdata.get(date, 0) for date in dates])) + '\n')

这样就获取了各个省份疫情历史数据(按照预期的格式,后面会用)
在这里插入图片描述

2. 制作racing bar视频

这里直接使用 https://app.flourish.studio/@flourish/bar-chart-race 在线制作工具。
其实只需要导入刚刚生成的csv格式数据,然后简单设置就行。
在这里插入图片描述
选择data,然后upload data file。
在这里插入图片描述
设置value为C-ZZ即可。其实还可以添加图标,设置分组等操作,具体我没操作。

3. 导出视频

这里没有发现哪里导出视频,我直接使用录屏软件录制,然后就得到了各省疫情变化的racing bar视频。如下
在这里插入图片描述

开开心心传到抖音、B站,然后等着一夜爆红。。。

结果没有过审

这篇博客技术性不强,主要是记录一下制作racing bar视频的全过程。毕竟我在网上也没有快速找到制作这类视频的方法,也算是一个类似的可视化教程帖。有兴趣的可以自己玩玩。

下面是公众号,欢迎扫描二维码,谢谢关注,谢谢支持!
公众号名称: Python入坑NLP
公众号
本公众号主要致力于自然语言处理、机器学习、coding算法以及Python的一些知识分享。本人只是小菜,希望记录自己学习、工作过程的同时,大家一起进步。欢迎交流、分享。



所属网站分类: 技术文章 > 博客

作者:编程gogogo

链接:https://www.pythonheidong.com/blog/article/265613/3a91985fef0d38edb85f/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)