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

简介: 本文介绍了一个基于Python的数据采集与可视化分析项目,该项目通过爬虫技术从国家级非物质文化遗产代表性项目名录网站获取数据,并运用数据清洗、转换、集成和规约等方法处理数据,最终利用pyecharts库进行多种数据可视化展示,包括分布地、类别、时间趋势等,以直观呈现非物质文化遗产的相关信息。

1. 获取数据

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.2 获取地址

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

1.3 分析页面

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

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

1.4 数据提取

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

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

1.5 数据存储

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

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

数据转换

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

数据清洗

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

数据集成

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

数据规约

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

2 数据可视化

2.1 分布地可视化

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

2.2 类别可视化

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

2.3 类别时间可视化

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

2.4 人数时间可视化

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

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

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

名录可视化

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

相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
104 0
|
1月前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
32 2
Python实用记录(三):通过netron可视化模型
|
11天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第33天】本文将介绍如何使用Python编程语言进行数据分析和可视化。我们将从数据清洗开始,然后进行数据探索性分析,最后使用matplotlib和seaborn库进行数据可视化。通过阅读本文,你将学会如何运用Python进行数据处理和可视化展示。
|
1月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
1月前
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
|
1月前
|
数据采集 自然语言处理 API
Python反爬案例——验证码的识别
Python反爬案例——验证码的识别
|
1月前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
|
1月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
33 2
|
1月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
187 0
|
1月前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
26 0