数据可视化的Python实现

一、GDELT介绍

GDELT ( www.gdeltproject.org ) 每时每刻监控着每个国家的几乎每个角落的 100 多种语言的新闻媒体 -- 印刷的、广播的和web 形式的,识别人员、位置、组织、数量、主题、数据源、情绪、报价、图片和每秒都在推动全球社会的事件,GDELT 为全球提供了一个自由开放的计算平台。

GDELT 主要包含两大数据集: Event Database (事件数据库) 、 Global Knowledge Graph (GKG, 全球知识图谱),记录了从1969 年至今的新闻,并于每十五分钟更新一次数据。

二、研究内容

本次研究数据来自 gdelt 数据库,爬取 2022.01.01-2022.07.20 所有 export 和 mentions 表,从中提取俄乌 冲突相关数据,由此进行分析。主要分析内容如下:

  1. 基于BERT实现GDELT新闻事件数据中事件正文文本的情感分析
  2. 基于MySQL的本地数据库导入、查询和存储
  3. 基于JavaScript和echarts的数据可视化图表库对新闻事件数据进行多方面可视化
  4. 将可视化界面部署到服务器上以供其他用户通过网址查看
  5. 其他算法进行情感分析

三、项目实施方法设计

1、使用语言

前段静态页面: html 、 css 、 JavaScript 、 echarts

连接数据库页面:增加 php 连接 MySQL

数据处理: Pycharm+Python , Jupyter+Python

2、项目流程


 四、具体实现与测试

1、数据集下载

def get_data(url):# 获取urlfile_name = url.split("gdeltv2/")[1].split(".zip")[0]r = requests.get(url)temp_file=open("./temp.zip", "wb")temp_file.write(r.content)temp_file.close()try:my_zip=zipfile.ZipFile('./temp.zip','r')my_zip.extract(file_name,path="./data")my_zip.close()except Exception:print("%s not exist" % file_name)return None
def get_data_df(): #日期读取f=open("date.txt")date=[]time=[]for i in f.readlines():date.append(i.strip("\n"))f.close()f=open("time.txt")for i in f.readlines():time.append(i.strip("\n"))f.close()#地址整合url1 = "http://data.gdeltproject.org/gdeltv2/%s.export.CSV.zip"url2 = "http://data.gdeltproject.org/gdeltv2/%s.mentions.CSV.zip"for i in date:for j in time:str_real_time=i+jget_data(url1%str_real_time)get_data(url2%str_real_time)print("%s-complete"%i)

下载 2022.01.01-2022.07.20 的数据, 数据量大约 20GB ,下载完成后, export 表和 mentions 表混合放置,因此需要将表按月分类放置,代码如下:

import os
import shutil
for i in range(1,8):src_folder="./totaldata/20220"+str(i)tar_folder="./totaldata/20220"+str(i)files=os.listdir(src_folder)for file in files:src_path=src_folder+'/'+filefor file in files:# 将每个文件的完整路径拼接出来src_path = src_folder + '/' + fileif os.path.isfile(src_path):tar_path = tar_folder + '/' + file.split('.')[-2]print(tar_path)# 如果文件夹不存在则创建if not os.path.exists(tar_path):os.mkdir(tar_path)# 移动文件shutil.move(src_path, tar_path)

为了更方便处理,我们将 export 表的数据合并, mentions 表的数据合并,代码如下:

os.chdir(Folder_Path)
file_list=os.listdir()
for i in range(1,len(file_list)):df=pd.read_csv(file_list[i],sep='\t')df.to_csv(SaveFile_Path+"/"+SaveFile_Name,encoding="utf_8_sig",index=False,header=None,mode='a+')sys.stdout.write("\r已合并:%.2f%%"%float((i/len(file_list))*100))sys.stdout.flush()

2、数据集处理

(1)查看空字段数量并排序

is_null=df_01.isnull().sum().sort_values(ascending=False)
is_null[is_null>row*0.85]#筛选出空值数量大于85%的数据

(2)删除缺失率大于85%字段

drop_columns=['Actor2Type3Code','Actor1Type3Code','Actor2Religion2Code',
'Actor1Religion2Code','Actor2EthnicCode','Actor1EthnicCode',
'Actor2Religion1Code','Actor2KnownGroupCode','Actor1Religion1Code',
'Actor1KnownGroupCode','Actor2Type2Code','Actor1Type2Code']
df_01.drop(drop_columns,axis=1,inplace=True)

得到结果如下:

3、数据导入MySQL与分析 

(1)创建数据库

这里值得注意的是,很多字段在后续分析中没有用到,但还是导入进去了,为了和元数据保持一致性。

CREATE TABLE `export` (
`GLOBALEVENTID` int NOT NULL,
`SQLDATE` bigint,
`MonthYear` bigint,
`Year` bigint,
`FractionDate` bigint,
`Actor1Code` varchar(255),
`Actor1Name` varchar(255),
`Actor1CountryCode` varchar(255),
`Actor1Type1Code` varchar(255),
`Actor2Code` varchar(255),
`Actor2Name` varchar(255),
`Actor2CountryCode` varchar(255),
`Actor2Type1Code` varchar(255),
`IsRootEvent` varchar(255),
`EventCode` varchar(255),
`EventBaseCode` varchar(255),
`EventRootCode` varchar(255),
`QuadClass` int,
`GoldsteinScale` double,
`NumMentions` int,
`NumSources` int,
`NumArticles` int,
`AvgTone` double,
`Actor1Geo_Type` varchar(255),
`Actor1Geo_FullName` varchar(255),
`Actor1Geo_CountryCode` varchar(255),
`Actor1Geo_ADM1Code` varchar(255),
`Actor1Geo_ADM2Code` varchar(255),
`Actor1Geo_Lat` double,
`Actor1Geo_Long` double,
`Actor1Geo_FeatureID` varchar(255),
`Actor2Geo_Type` varchar(255),
`Actor2Geo_FullName` varchar(255),
`Actor2Geo_CountryCode` varchar(255),
`Actor2Geo_ADM1Code` varchar(255),
`Actor2Geo_ADM2Code` varchar(255),
`Actor2Geo_Lat` double,
`Actor2Geo_Long` double,
`Actor2Geo_FeatureID` varchar(255),
`ActionGeo_Type` varchar(255),
`ActionGeo_FullName` varchar(255),
`ActionGeo_CountryCode` varchar(255),
`ActionGeo_ADM1Code` varchar(255),
`ActionGeo_ADM2Code` varchar(255),
`ActionGeo_Lat` double,
`ActionGeo_Long` double,
`ActionGeo_FeatureID` varchar(255),
`DATEADDED` bigint,
`SOURCEURL` text,
PRIMARY KEY (`GLOBALEVENTID`)
);

(2)导入数据

LOAD DATA INFILE 'E:/term/code/mergedata/export/export_202201.csv' INTO TABLE
`export`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;

(3)年份处理和简单查询

DELETE
FROM rus_and_ukr
WHERE `MonthYear`<202201
SELECT COUNT(GLOBALEVENTID) FROM export -- 21504131

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490804.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GIS教程】使用GDAL-Python将tif转为COG并在ArcGIS Js前端加载-附完整代码

目录 一、数据格式 二、COG特点 三、使用GDAL生成COG格式的数据 四、使用ArcGIS Maps SDK for JavaScript加载COG格式数据 一、数据格式 COG&#xff08;Cloud optimized GeoTIFF&#xff09;是一种GeoTiff格式的数据。托管在 HTTP 文件服务器上&#xff0c;可以代替geose…

Git-分布式版本控制工具

目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中&#xff0c;我们经常会遇到以下几个场景&#xff1a;备份、代码回滚、协同开发、追溯问题代码编写人和编写时间&#xff08;追责&#xff09;等。备份的话是为了…

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候&#xff0c;有一个需求是限制相机倾斜角&#xff0c;也就是鼠标中键调整视图俯角时&#xff0c;不能过大&#xff0c;一般 pitch 角度范围在 0 至 -90之间&#xff0c;-90刚好为正俯视。 在网上查阅了很多资料&#xff0c;发现并没有一个合适的…

YOLOv5-Backbone模块实现

YOLOv5-Backbone模块实现 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 电脑系统&#xff1a;Windows11 显卡型号&#xff1a;NVIDIA Quadro P620 语言环境&#xff1a;python 3.9.7 编译器&#xff1a…

Envoy 服务发现原理大揭秘与核心要点概述

1 Envoy动态配置介绍 动态资源&#xff0c;是指由envoy通过xDS协议发现所需要的各项配置的机制&#xff0c;相关的配置信息保存 于称之为管理服务器&#xff08;Management Server &#xff09;的主机上&#xff0c;经由xDS API向外暴露&#xff1b;下面是一个 纯动态资源的基…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例&#xff1a;某报表处理系统要求用户输入处理报表的日期&#xff0c;日期限制在2003年1月至2008年12月&#xff0c;即系统只能对该段期间内的报表进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息…

linux普通用户,配置python环境及oracle客户端

需求&#xff1a; 有一个python脚本&#xff0c;需要在linux普通用户下运行&#xff0c;脚本中需要连接oracle数据库查询数据 本地环境&#xff1a;centos7.6 Python版本&#xff1a;Python3.6 Oracle版本&#xff1a;12c 配置Python环境 选择对应Python版本进行下载 注意&am…

单元测试-FATAL ERROR in native method: processing of -javaagent failed

文章目录 前言单元测试-FATAL ERROR in native method: processing of -javaagent failed1. 报错信息2. 解决方案 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运…

如何平衡向量检索速度和精度?深度解读HNSW算法

向量检索&#xff08;向量相似性搜索&#xff09;是AI时代最重要的技术之一。其典型应用场景包括&#xff1a;推荐系统、检索增强生成&#xff08;RAG&#xff09;等高级GenAI应用。 向量检索最突出的优势是准确性和速度。 过去&#xff0c;向量搜索通常是用暴力扫描的方式来找…

Python的3D可视化库【vedo】2-2 (plotter模块) 访问绘制器信息、操作渲染器

文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4…

强化学习的学习笔记

什么是强化学习&#xff1f; 强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学…

Leetcode42-环形链表

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

ElasticSearch 简介

一、什么是 ElastcSearch&#xff1f; ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库&#xff0c;ES 中的索引是存储数据的地方&#xff0c;包含了一堆有相似结构的文档数据…

【学习笔记】桌面浏览器的视口

概念&#xff1a;设备像素和CSS像素 设备像素&#xff1a;设备物理屏幕的像素分辨率&#xff0c;使用screen.width/height获取 这里有四个像素100%缩放&#xff0c;CSS像素完全覆盖设备像素 缩小后&#xff0c;CSS像素开始缩小&#xff0c;意味着一个设备像素覆盖多个CSS像素…

嵌入式软考学习笔记(1)超详细!!!

目录 第一章计算机系统基础知识 1、逻辑运算 2、数的表示 3、总线系统 5、流水线 6、存储器 7、可靠性、校验码 第一章计算机系统基础知识 1、逻辑运算 与&#xff1a;有0则0&#xff0c;全1才1 或&#xff1a;有1则1&#xff0c;全0才0 异或&#xff1a;相同为0…

FFmpeg功能使用

步骤&#xff1a;1&#xff0c;安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev&#xff1b;如下图 会跳到另外的下载界面&#xff1a; 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip&#xff1a; 即可下载到FFmpeg&#xff1b; 使用&#…

接口开发笔记-WebApi

一、基础概念与原理 1、WebAPI的基本概念。 WebAPI是一种基于HTTP协议的网络应用程序接口&#xff0c;它使用JSON或XML格式来传输数据。WebAPI是服务器端应用程序&#xff0c;允许客户端应用程序通过HTTP请求来访问服务器上的数据。WebAPI支持RESTful服务&#xff0c;是构建这…

文件转曲,限制PDF文件编辑的最佳方案!

随着数字化进程的推进&#xff0c;PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用&#xff0c;成为了现代文档交流和存储的重要工具&#xff0c;满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多&#xff0c;常见的比如阅读、编辑、加密、转换、还可用于印刷…

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考&#xff0c;摘录一些书中关于维度建模比较重要的思想与大家分享&#x1f923;&#x1f923;&#x1f923; 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读&#xff0c;感受一下…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…