基于python的全局数据库检索框架

gdelt的Python项目详细描述


…-*-模式:rst-*-

…图片:https://travis-ci.org/linwoodc3/gdeltpyr.svg?branch=master
:目标:https://travis ci.org/linwoodc3/gdeltpyr

…图片::https://ci.appveyor.com/api/projects/status/yc6u8v6uvg212dcm/branch/master?svg=true
:目标:https://ci.appveyor.com/project/linwoodc3/gdeltpyr/history

…图片::https://badge.fury.io/py/gdelt.svg
:目标:https://pypi.python.org/pypi/gdelt

…图片::https://coveralls.io/repos/github/linwoodc3/gdeltpyr/badge.svg?branch=master
:目标:https://coveralls.io/github/linwoodc3/gdeltpyr?branch=master

gdelt in python with``gdeltpyr``
========br/>
``gdeltpyr``是一个基于python的框架,用于访问和分析'global database of events,language,and tone(gdelt)1.0和2.0<;http://gdeltproject.org/data.html>;`` python pand中的数据AS或R数据帧。用户可以输入单个日期、日期范围(两个字符串的列表)或单个日期(列表中有两个以上的日期),然后返回一个"准备好进行科学或数据驱动的探索的整洁数据集"lt;http://vita.had.co.nz/papers/tidy data.pdf>;` `.


`gdeltpyr`检索"gdelt,1.0和2.0da"ta,<;http://gdeltproject.org/data.html>;``通过'并行http get请求'lt;http://docs.python requests.org/en/v0.10.6/user/advanced/`异步请求'gt;``还将包括一种方法,可以通过google bigquery访问gdelt数据<;http://gdeltproject.org/data.html>;''因此,CPU或内核越多,提取更多数据所需的时间就越少。而且,内存越多,可以提取的数据就越多。最后,对于ram受限的工作流,创建一个管道来提取数据、写入磁盘和刷新。数据拉取"gdeltpyr"的唯一限制是你的硬件。

gdelt项目宣传它是人类社会有史以来最大、最全面、分辨率最高的开放数据库。它以100多种语言监控世界各国的印刷、广播和网络新闻媒体,不断更新地球上任何地方的最新发展。它的历史档案可以追溯到1979年1月1日,随着GDELT事件和全球知识图表每15分钟更新一次,它可以近乎实时地访问世界上的突发事件和反应。访问"gdelt网站了解有关该项目的更多信息<;(http://gdelt project.org/intro)>;`.


gdelt facts
----
**gdelt 1.0是每日数据集**
*1.0只有"events"和"gkg"表
*1.0在次日早上6点发布前一天的数据(i.E.周一的数据将在东部时间周二早上6点提供)
**GDELT 2.0每15分钟更新一次**
*GDELT 2.0中缺少一些时间间隔;``gdeltpyr``在数据丢失时提供警告消息
*2.0具有'events'、'gkg'和'envisions'表
*2.0具有母语英语和翻译成英语之间的区别



项目概念和发展计划
----------


本项目将分"两个阶段"进行发展<;https://github.com/linwoodc3/gdeltpyr/projects>;`。此外,如果您想为项目做出贡献,本节可以帮助您确定工作的优先顺序。

*第一阶段的重点是提供对GDELT数据的一致、稳定和可靠的访问。

因此,本页中的大多数"问题"都是https://github.com/linwoodc3/gdeltpyr/issues>;`hase将构建主"search"类以返回"gdelt data,version 1.0或version 2.0"<;http://gdeltproject.org/data.html"intro">;`,或者同等重要的是,在没有返回数据时给出相关的错误消息。这也意味着该项目将专注于构建文档、单元测试框架(覆盖率达到90%),并创建一个helper类,该类提供有关列名/表描述的有用信息。

*第2阶段将分析引入到"gdeltpyr"中,以便将库扩展到一个简单的数据检索功能之外

这一阶段将使"gdeltpyr"对更广泛的受众有用。主要的附加课程是"分析"课。对于有数据素养的用户(数据科学家、研究人员、学生、数据记者等),这一阶段的改进将通过提供GDELT数据的汇总统计和提取方法节省时间,从而减少用户编写代码执行日常数据清理的时间。P/分析。对于非技术受众(学生、记者、业务经理等),此阶段的增强将提供总结GDELT数据的输出,这些数据可依次用于报告、文章等。重点领域包括描述性统计(平均值、拆分应用组合统计等),以及ATIAL分析和时间序列。

**截至2017年10月的新功能**
添加了geodataframe输出。这可以很容易地转换为shapefile或"choropleth<;https://en.wikipedia.org/wiki/choropleth-map>;``可视化。
2。增加了针对windows、osx和linux(ubuntu)的持续集成测试
3。规范化列输出;使用SQL就绪列导出数据(无特殊字符,全部小写)
4。从GDELT v2中选择本地英语或翻译成英语数据集。
5.返回给定表的架构;只需在"gdelt.gdelt.schema"方法中键入表的名称,然后返回包含架构信息的pandas数据帧

code-block:: python

#############################
# Import gdeltPyR; instantiate
#############################

import gdelt

gd = gdelt.gdelt()

gd.schema('events')

Coming Soon (version 0.1.11, as of Oct 2017)
----------————

*输出/存储"gdeltpyr"将产生"拼花格式"结果<;http://wesmckinney.com/blog/python parquet update/>;`;高效的列存储以减少内存占用并优化加载
*直接从"gdeltpyr"us查询google的bigquery在"pandas.io.gbq"界面中;需要身份验证和google计算帐户
*添加对"gdelt visual knowledge graph(vgkg)"的查询<;http://blog.gdeltproject.org/gdelt-visual-knowledge-graph-vgkg-v1-0-available/>;`\br/>*添加对"gdelt american television global kno"的查询wledge graph(tv-gkg)<;http://blog.gdeltproject.org/发布美国电视全球知识图tv-gkg/>;`

来自github.com::

pip安装git+https://github.com/linwoodc3/gdeltpyr







图片::https://twistedsifter.files.wordpress.com/2015/06/people-tweeting-about-sunrises-over-a-24-hour-period.gif?w=700&h=453
:alt:gdelt可以帮助您可视化世界新闻!!!!用gdeltpyr分析gdelt数据!!

基本用法code-block:: python

#############################
# Import gdeltPyR; instantiate
#############################

import gdelt

gd = gdelt.gdelt(version=2)

results = gd.Search(['2016 10 19','2016 10 22'],table='events',coverage=True,translation=false)





元素(和建议)是确保您为您的增强或添加编写一个单元测试(或者编写一个新的单元测试来帮助我们达到90%的覆盖率e)。此外,在travis ci(osx和linux)和appveyor(windows)中通过现有的单元测试之前,我们无法接受提交。

如果您只是想开始使用"gdeltpyr"代码库,请导航到"issues<;(https://github.com/linwoodc3/gdeltpyr/issues)>;``选项卡并开始查找有趣的问题。列出了许多问题,您可以从中开始。

或者通过使用"gdeltpyr",您有了自己的想法,或者正在文档中寻找一些东西,并认为"这可以改进"`……您可以对此做些什么!

gdeltpyr dev environment
——

windows用户应该尝试下面的"windows dev environment"部分。

;https://github.com/linwoodc3/gdeltpyr/>;``u
*cd到``gdeltpyr``源目录

代码块::bash

conda create-n gdelt_dev python=2-c conda forge--file travis/requirements_all.txt



*对于python 3.5

代码块::bash

conda create-n gdelt_dev python=3-c conda forge--file travis/requirements_all.txt



*对于python 3.6

代码块::bash

conda create-n gdelt_dev python=3.6-c conda forge--file travis/requirements_all36.txt




windows dev environment
-

对于windows,我们将再次遵循"pandas"文档(如果这对"gdeltpyr"不起作用,请告诉我)。要在windows上构建,需要安装编译器来构建扩展。您将需要安装相应的Visual Studio编译器,Python 2.7的VS 2008,Python 3.4的VS 2010,Python 3.5和3.6的VS 2015。


对于Python 2.7,您可以安装与VS 2008等效的MingW编译器:

。代码块::bash

conda install-n gdelt_dev libpython



,或者使用Microsoft Visual Studio VC++编译器for Python。请注意,必须选中"x64"框才能安装x64扩展生成功能,因为默认情况下未安装该功能。

对于python 3.4,可以下载并安装Windows 7.1 sdk。请阅读下面的参考资料,因为在安装过程中可能会遇到各种问题。

对于python 3.5和3.6,您可以下载并安装visual studio 2015社区版。

以下是一些参考资料和博客:

*https://blogs.msdn.microsoft.com/pythonenengineering/2016/04/11/无法找到vcvarsall bat/
*https:。//github.com/conda/conda recipes/wiki/building-from-source-on-windows-32-bit-and-64-bit
*https://cowboyprogrammer.org/building python wheels for windows/
*https://blog.ionelmc.ro/2014/12/21/compiling python extensions on windows/
*https://support.enthught.com/hc/en-us/articles/204469260 building python extensions with canopy

这将创建新的环境,而不会触及任何现有的环境**,也不会触及任何现有的python安装**。它将安装"gdeltpyr"的所有基本依赖项,以及开发和测试工具。要进入这个新环境:

*在Windows上

…代码块:bash

代码块::bash


source激活gdelt_dev


然后您将看到一条确认消息,指示您处于新的开发环境中。

要查看您的环境:

…代码块::bash

conda info-e




返回windows中的主根环境:

…代码块::bash

deactivate




返回osx/linux中的主根环境:

……代码块::bash




building gdeltpyr
---------


请参阅"完整的conda文档此处<;http://conda.pydata.org/docs>;` `.

最后一步是将gdelt开发源安装到此新目录中。首先,确保使用上述说明将cd放入gdeltpyr源目录。您有两个选项来生成代码:

1。开发"gdeltpyr"的最佳方法是通过运行:

代码块::bash

python setup.py build_ext--inplace


如果在pandas源目录中启动python解释器,您将调用构建的c扩展

2。另一个非常常见的选择是开发安装熊猫:

…代码块:bash

python setup.py develop



这是一个符号链接,告诉python解释器从开发目录导入panda。因此,您始终可以在系统上使用开发版本,而不必在克隆目录中。



连续集成
——

``pandas``有一篇关于连续集成(ci)的精彩报道。因为"gdeltpyr"包含相同的ci概念,所以如果有问题,请阅读pandas ci的介绍和解释<;https://pandas.pydata.org/pandas docs/stable/contribution.html;使用持续集成进行测试>;`。分支或拉取请求的所有生成都应使用"greens"传递,然后才能与主分支合并。

…image::data/allgreensci.png
:alt:ci greens




html"贡献您对pandas所做的更改"gt;`"如何贡献给‘gdeltpyr’。




提交问题/请求的样式
--------------------------
我们遵循"pandas<;https://pandas.pydata.org/pandas docs/stable/contribution.html"贡献-your-c更改为pandas>;``问题和拉取请求的编码样式。使用以下样式:

*enh:增强,新功能
*bug:bug fix
*doc:添加/更新文档
*tst:添加/更新测试
*bld:更新生成过程/脚本
*perf:性能改进
*cln:代码清理

Issue就是一个例子<;https://github.com/linwoodc3/gdeltpyr/issues/8>;` `.


>完全开放源码项目,贡献者如下:


*linwood creekmore


<2016-09-25


released 0.1
gdeltpyr的初始签入



2016-10-23
Work在0.1版本中,基本功能都在那里

2016-10-25
更改了manifest.in文件;清除了egg.info

2016-10-30
编辑了警告字符串并将一些代码与pep8对齐


2016-10-31
添加了可读的cameo代码列

2016-10-31
错误修复;安装时未加载或下载文件


2016-11-03
增加了提取GKG 1.0数据的功能

2016-11-06
gdelt更改了2.0事件数据库的URL结构。


2016-11-07
base.py第290行的打印错误;删除并修复了错误。

<2017-05-23
upd添加到0.1.10
添加geodataframe输出
开始添加unittests(首先是datefuncs,添加了函数的docstring和pep8依从性。
修复了当前日期的日期检查错误;

<2017-05-27
删除了日期时间解析
添加了2013年之前事件的unittests、4月1日之前的gkg v1等。


2017-07-18
添加了对gkg的gdelt v2中翻译为英语的数据集的支持,事件被提及。

2017-07-24
将方法设为私有;单下划线表示开发人员的私有方法

2017-08-05
将覆盖徽章和测试添加到CI;更新自述文件;添加详细的贡献文档。

2017-08-09
实现了整个代码库80%的单元测试覆盖率。

2017-10-30
将模式方法添加到return表信息数据;将macos的持续集成切换到conda;一直失败。高达84%的覆盖率

2018-08-11
增加了更多的单元测试,包括代理参数、删除了r输出和添加了拼花格式。


2018-10-18
修复了636行的错误;具有挂起代理参数。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring data rest域驱动设计发布非聚合根实体   使用ContentValues提升整数列的值(Java、Android)   Google应用程序引擎(Java)+Spring管理的PersistenceManager   java如何使用JDT获取封闭方法节点?   java在字符串中首先计算负数运算   java Android如何在单击按钮时更改底部导航项的颜色   java理解Javafx运行时错误   swing Java创建笔刷笔划动作   java在非Netty客户端中从Netty服务器获取响应   java计数将参数传递给方法   java Android AIDL gen文件导致警告?   swing Java JFrame互动程序   scjp测试中的java正则表达式测试   Java中的桌面应用   java我可以使用spring security在cookies中存储完整的用户信息吗?记住我   java中棘手的方法重载   java忽略Mockito中的方法调用   java skipUntil和具有并发1的flatMap挂起在Reactor中   为什么我要关闭java。util。扫描仪变量?