一、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 表,从中提取俄乌 冲突相关数据,由此进行分析。主要分析内容如下:
  • 基于BERT实现GDELT新闻事件数据中事件正文文本的情感分析
  • 基于MySQL的本地数据库导入、查询和存储
  • 基于JavaScript和echarts的数据可视化图表库对新闻事件数据进行多方面可视化
  • 将可视化界面部署到服务器上以供其他用户通过网址查看
  • 其他算法进行情感分析

三、项目实施方法设计

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

接下来将针对俄乌冲突进行筛选查询和可视化~

全球新闻数据可视化(1)--数据下载与处理相关推荐

  1. GEEer成长日记九:Worldpop100m分辨率人口数据可视化及批量下载

    最近看到好多小伙伴在找Worldpop人口数据.小编之前去看的时候,全国的影像一张就4G左右,太大了.不过小编已经为大家搜集好了全国的数据,关注微信公众号:GEEer成长日记.即可获取. 今天我们主要 ...

  2. 什么是数据可视化,数据可视化有什么价值

    "数据可视化"这个词看上去似乎让人有点摸不着头脑,但其实在实际生活中也有类似的应用. 举个例子,媒婆给你介绍对象,前面给你铺垫一堆,如五官端正.身材修长.皮肤雪白(各种繁杂的信息描 ...

  3. python可视化的优势_「数据可视化」数据可视化的优势有哪些?

    数据可视化的优势有哪些?大数据可视化的实际意义是协助人更强的分析数据,信息内容的品质挺大水平上取决于其表达形式.对大数字列举所构成的数据信息中所包括的实际意义开展剖析,使剖析結果数据可视化. 实际上大 ...

  4. MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测

    MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...

  5. Tikz作图教程:pgfplots宏包二维数据可视化的数据导入方法

    pgfplots 绘图思想简介 下面一段介绍来自pgfplots说明文档的引言部分,它对pgfplots的绘图思想作了清晰地描述: 科研工作者在交流研究结果.论文时,将数据可视化往往是必要和方便的. ...

  6. 图灵程序设计丛书•鲜活的数据:数据可视化指南 - 电子书下载(高清版PDF格式+EPUB格式)...

    图灵程序设计丛书•鲜活的数据_数据可视化指南-邱 (Nathan Yau) 在线阅读                   百度网盘下载(o3hg) 书名:图灵程序设计丛书•鲜活的数据:数据可视化指南 ...

  7. 【数据可视化】数据可视化之美——用专家的眼光洞察数据

    ⭐️ 本文首发自 前端修罗场(点击加入),是一个由 资深开发者 独立运行 的专业技术社区,我专注 Web 技术.Web3.区块链.答疑解惑.面试辅导以及职业发展.博主创作的 <前端面试复习笔记& ...

  8. AB PLC数据的Node-Red简单数据可视化+MQTT数据云共享之节点分享

    介绍 本文主要介绍Node-Red读取AB PLC 数据并做简单的数据可视化设计以及数据的云端局部共享 . 目的只为分享Node-Red节点及使用. 数据读取及发布配置 本节通过Node-Red节点的 ...

  9. 【数据可视化】数据可视化七大发展趋势

    根据云栖社区文章整理,2017年全球深度报道大会针对数据可视化趋势. 1. 玩转地图 Groeger表示,目前的可视化技术水平已经远远超出了Google Maps,而且每天都会出现很多实验性的技术. ...

  10. 数据可视化:数据可视化四象限,教你正确应用图标

    文章目录 简介 01 观点说明 02 观点生成类 03 可视化发掘 3.1 可视化证实 3.2 可视化探索 04 日常数据可视化 简介 将性质和目的这两个问题的答案整合在一个经典的2×2矩阵中,就得到 ...

最新文章

  1. 测试中如何管理外包质量_如何从测试自动化中实现价值
  2. Android RecyclerView 性能优化总结
  3. nodemanager不能正常关闭_家居燃气安全,燃气阀门的开与关可不能不当回事
  4. Atitit 浏览器tech原理与概论 目录 1. 浏览器概述 1 1.1. 浏览器野史 UserAgent列传 1 1.2. 浏览器趋势 1 1.3. 浏览器大战 1 1.4. 三次浏览器大战 2
  5. 语音信号的LPC特征提取
  6. 计算机电源改造加大功率,最标准的电脑电源功率计算公式 十代酷睿电源搭配建议...
  7. 数字单位转换(例:元->万元)
  8. 【Java每日一题】Java笔试100题(1)
  9. 数据报表开发技巧:自动为数据报表添加【小计】、【总计】行
  10. matlab零序五次谐波,基于5次谐波的小电流接地系统故障选线方法仿真与分析.docx...
  11. Luogu5149会议座位
  12. Fortify常见漏洞解决方案
  13. 操作系统OS第一章练习作业【附答案详解】
  14. 三星手机定时开关机设置方法
  15. 【菜鸟窝】人工智能就业与面试指南
  16. buuctf_Misc-喵喵喵
  17. matlab imfill,Python相当于Matlab的灰度函数imfill?
  18. php 通过phpqrcode.php 生成二维码
  19. bsc是指什么_什么是平衡计分卡
  20. python+vue 餐饮食品安全监管投诉平台

热门文章

  1. 【深度学习】数据集打标签:生成train.txt和val.txt
  2. 初学爬虫之 urllib 库的介绍与使用(一)
  3. pod 查看当前源/添加源
  4. VMware linux系统上网
  5. JavaScript - 模式匹配
  6. StackOverflowError
  7. 最新实用版——JAVA使用POI替换Word模板中指定字符,并可插入图片。
  8. 修复视频后打不开怎么办
  9. 电力物联网(附下载)
  10. php中文网线上视频,看php中文网视频课程的正确姿势!