当前位置: 首页 > news >正文

【数据采集与可视化案例】基于python的国家级非物质文化遗产数据采集与可视化分析

  1. 获取数据
    1. 发起请求

首先确定采集的数据网址url,通过查看国家级非物质文化遗产代表性项目名录的网页发现,点击下一页,网页网址没有变化,可以确定数据是动态数据。需要在xhr或者js寻找。

在xhr中可以找到网页数据,所以可以根据这个地方确定爬取的url是:https://www.ihchina.cn/Article/Index/getProject.html?province=&rx_time=&type=&cate=&keywords=&category_id=16&limit=10&p=1,其中limit=10是页最大显示数,p=1代表第一页,所以翻页和最大显示数可以确定https://www.ihchina.cn/Article/Index/getProject.html?province=&rx_time=&type=&cate=&keywords=&category_id=16&limit=100&p={a},a表示定义翻页数,可以通过循环获取不同页码,利用request。Get()方法,像这个网址发起请求,获取数据。

    1. 获取地址

根据1.1内容,依样画葫芦可以发现,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面,可以通过for循环获取到。而中国入选联合国教科文组织非物质文化遗产名录(名册)项目国家级文化生态保护区数据少,而且数据可以在页面上获取,不用构建翻页,直接选择原网址即可。

    1. 分析页面

通过1.1可以知道,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面的数据需要xhr查看到,如下图

可以发现其数据是以字典和列表为主,是一个典型的json数据特征。而国家级文化生态保护区和联合国教科文组织项目可以在页面上定位到数据,数据在网页标签内,故可以选择使用beautifulsoup或者lxml的etree解析数据,通过节点数爬取标签数据,如下图

    1. 数据提取

综合前面的内容可以知道,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面的数据经过get()方法请求获取响应数据后,选择将数据直接转换成json数据,通过字典键值对和循环列表数据提取里面的字段信息,包括内容如下图:

而中国入选联合国教科文组织非物质文化遗产名录(名册)项目国家级文化生态保护区这两个页面数据,通过get方法获取响应信息后,利用etree解析网页数据,并通过定位标签,提取所包含的所有节点信息,提取出里面的字段如下图:

    1. 数据存储

国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录数据、国家级文化生态保护区三个页面提取成功后,通过openpyxl库,创建一个工作簿,通过指定单元格的形式来写入数据,最后保存为excel文档。

而中国入选联合国教科文组织非物质文化遗产名录(名册)项目,通过采集下来的数据转换成dataframe数据结构,通过to_excel方法,将数据结构里的数据存为excel文档。

数据转换

对数据进行转换就是对数据的合并、清理和整合。通过转换,可以实现不同的源数据在语义上的一致性。本研究数据转换更多应用是数据类型的转换和整合。主要将表格数据读取转换成dataframe,再通过可视化之前,再由dataframe结构转换成list或者元组等数据类型,方便可视化进行。

1.6数据清洗

数据清洗,顾名思义就是将要用到的数据中重复、多余部分的数据进行筛选并清除;把缺失部分补充完整,并将不正确的数据纠正或者删除。最后整理成可以进一步加工、使用的数据。从上面数据清洗的概念就可以大概知道数据清洗是在清洗什么了,洗掉的就是数据集中的“脏”数据。“脏数据”,即数据集中残缺、错误、重复的数据。数据清洗,旨在提高数据的质量、缩小数据统计过程中的误差值。本研究中,通过替换法,直接替换那些缺失值,使用replace()方法,将空值填补成无或者0,方便后面数据分析。

1.7数据集成

数据集成包括数据抽取、转换、加载。抽取是将数据从已有的数据源中提取出来。
转换是对原始数据进行处理,变成目标数据格式的过程。加载是将转换的结果写入目的地。本研究通过if条件语句,将国家级非物质文化遗产代表性项目名录中地点抽取处理,存为dataframe结构数据,方便后期统计和可视化。

1.8 数据规约

数据归约是指在对挖掘任务和数据本身内容理解的基础上、寻找依赖于发现目标的数据的有用特征,以缩减数据规模,从而在尽可能保持数据原貌的前提下,最大限度地精简数据量。数据归约主要有两个途径:属性选择和数据采样,分别针对原始数据集中的属性和记录。本研究通过属性选择进行数据规约,如在国家级非物质文化遗产代表性项目名录数据中选择类别和申报地区进行分析。

2数据可视化

2.1分布地可视化

分布地可视化选择用饼状图,呈现各个地区入选项目数量的分布情况,清晰直观看出哪个地区占比最大,入选最多。通过导入数据,生成dataframe结构利用groupby函数将地区分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成饼图输出,如下图

2.2类别可视化

类别可视化选择用柱状图,呈现不同类别入选的数量分布,可以直观知道哪个类别入选最多,哪个类别最少。通过导入数据,生成dataframe结构利用groupby函数将类别分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成柱形图输出,如下图

2.3类别时间可视化

类别时间可视化通过分析非遗数据传承人不同类别随时间变化的趋势,本研究通过多重折线图,将不同类别数量随时间变化体现出来。可以直观知道哪个类别在什么时间最多,在什么时间最少。通过导入数据,生成dataframe结构利用筛选时间的方式将时间单独统计以及使用groupby函数分组统计类别,转化成列表形式,最后使用pyechart可视化库,将数据渲染成多重折线图输出,如下图

人数时间可视化

人数时间走势可视化通过分析非遗数据传承人不同时间人数变化趋势,可以直观知道不同时间段,非遗项目人数变化趋势。直观知道哪个时间在项目最多,在什么时间最少。通过导入数据,生成dataframe结构利用groupby函数将时间分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成折线图输出,如下图

非物质文化遗产生态保护区目录

保护区目录分布通过复合柱状图形式呈现不同地区县级和国家级项目数量,直观了解哪个地区项目最多,哪个地区项目最少。通过导入数据,生成dataframe结构利用groupby函数将地区分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成复合柱形图输出,如下图

名录可视化

名录可视化呈现的是中国入选联合国教科文组织非物质文化遗产名录,通过词云图的形式将项目呈现在图上面。通过导入数据,提取所有项目转换成列表,通过for循环统计各个项目出现次数,生成一个含有项目和个数的元组的列表,最后使用pyechart可视化库,将数据渲染成词云图输出,如下图

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【漏洞扫描器】使用nessus扫描工具扫描服务器,并生成漏扫报告
  • SpringBoot Vue用自签名证书SSL配置https,http转发到https(整理文章)
  • test1111
  • 【前端】fis框架学习
  • 大模型是如何“炼”成的?揭秘AI背后的训练秘籍!
  • 消息推送只会用websocket、轮询?试试SSE,轻松高效。
  • Linux云计算 |【第二阶段】AUTOMATION-DAY5
  • moment.js的使用方法
  • mysql数据库知识总结
  • 10个append()函数在Python程序开发中的创新应用
  • 如何搭建数字人直播系统?快速上手方法来了!
  • docker安装phpMyAdmin
  • MySQL频繁超时原因调查
  • 达梦数据库归档介绍
  • MyBatis TypeHandler详解
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019年如何成为全栈工程师?
  • egg(89)--egg之redis的发布和订阅
  • ES6语法详解(一)
  • javascript从右向左截取指定位数字符的3种方法
  • JS字符串转数字方法总结
  • Vue ES6 Jade Scss Webpack Gulp
  • 测试如何在敏捷团队中工作?
  • 订阅Forge Viewer所有的事件
  • 蓝海存储开关机注意事项总结
  • 让你的分享飞起来——极光推出社会化分享组件
  • 入门级的git使用指北
  • 王永庆:技术创新改变教育未来
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Java数据解析之JSON
  • Spring Batch JSON 支持
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #DBA杂记1
  • $().each和$.each的区别
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (六)激光线扫描-三维重建
  • (南京观海微电子)——示波器使用介绍
  • (五)activiti-modeler 编辑器初步优化
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • **python多态
  • .NET 8 跨平台高性能边缘采集网关
  • .net Application的目录
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .net反编译的九款神器
  • .NET基础篇——反射的奥妙
  • .NET企业级应用架构设计系列之应用服务器
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • ;号自动换行