类似pandas的sql包装器,用于ibm db2 warehouse的数据库内分析。

ibmdbp的Python项目详细描述


ibmdbpy
*****


>通过数据库内处理加速python分析
====
==


ibmdbpy项目提供了一个python接口,用于ibm db2中的数据操作和对数据库内算法的访问。它通过将用python编写的操作无缝地推送到底层数据库中执行来加速python分析,从而受益于数据库内的性能增强功能,例如列存储和并行处理。

ibm db2是一个数据库管理系统。ibmdbpy项目可以由python开发人员使用,只需很少的额外知识,因为它复制了用于数据操作的pandas库和用于机器学习算法的scikit学习库的众所周知的接口。python版本2.7到3.6,可以通过odbc或jdbc连接到db2数据库。

然而,一些实验已经证明,它在处理中等或大量数据(即在100万行或更多行的表上)时提供了显著的性能优势。

ibmdbpy的最新版本可在"python package index"和github上找到。

https://pypi.python.org/pypi/ibmdbpy

_ github:https://github.com/ibmdbanalytics/ibmdbpy

----


ibmdbpy项目将类似panda的语法转换为sql,并使用中间件api(pypyodbc/jaydebapi)将其发送到odbc或jdbc连接的数据库以供执行。结果将被提取并格式化到相应的数据结构中,例如pandas.dataframe或pandas.series。

通过ODBC连接到一个数据库(在本例中是一个名为bludb的DB2数据库):

>;>;从ibmdbpy导入idadatabase,idadataframe
>;>;idadb=idadatabase('bludb')

ibmdbpy中包含了一些示例数据集供您进行实验。我们可以首先将知名的iris表加载到这个db2数据库中。

>;>;来自ibmdbpy.sampledata import iris
>;>;idadb.as廑ida data frame(iris,"iris")
<;ibmdbpy.frame.idadataframe at 0x7ad77f0>;

接下来,我们可以创建一个指向我们刚刚上传的表。让我们使用这个:

>;>idadf=ida data frame(idadb,"iris")


注意,要使用idadataframe对象创建ida数据帧,我们需要指定以前打开的idadatabase对象,因为它保留连接。

里克斯:

>;>idadf.corr()

ibmdbpy在后台查找表中的数字列,并生成一个返回每对列之间相关性的sql请求。以下是针对此示例执行的SQL请求::

select correlation("sepal_length","sepal_width"),
correlation("sepal_length","petal_length"),
correlation("sepal_length","petal_width"),
correlation("sepal_width","petal_length"),
correlation("sepal_ width","petal_width",
correlation("petal_length","petal_width")
来自iris


ibmdbpy获取的结果是一个包含矩阵所有值的元组。此元组被格式化回pandas.dataframe,然后返回::


花瓣长度0.871754-0.428440 1.000000 0.962865
花瓣宽度0.817941-0.366126 0.962865 1.000000

等等!

地理空间功能的工作方式
它标识空间表的几何列,并允许您基于该列执行空间查询。结果将被获取并格式化到相应的数据结构中,例如,一个IDagodeataframe。

database,idageodataframe
>;>;idadb=idadatabase('bludb')
>;>;idadf=idageodataframe(idadb,'samples.geo嫒county')

请注意,要使用idadataframe对象创建idageodataframe,我们需要指定以前打开的idadatabase对象,因为它包含连接。

现在让我们计算geo_county表中的县的面积。该区域的结果将作为新列"区域"存储在IDageDataFrame中:

>;>IDADF['area']=IDADF.area(colx='shape')
objectid name shape area
1 wilberger multipolygon((-99.4756582604 33.8340108094,…0.247254
2奥斯汀多聚体((-96.6219873342 30.0442882117,…0.162639
3对数多多边形((-99.4497297204 46.6316377481,…0.306589
4拉普拉塔多聚体((-107.4817473750 37.0000108736,…0.447591
5伦道夫多聚体((-91.2589262966 36.2578866492,…0.170844



在后台,ibmdbpy查找表中的几何列,并生成一个返回每个几何体的区域的sql请求。
以下是为此示例执行的sql请求::

_ County T;



功能选择
==

==

ibmdbpy提供一系列功能以支持高效的数据库功能选择,例如,估计属性与特定目标的相关性。函数和文档可以在子模块"ibmdbpy.feature\u selection"中找到。

项目路线图在github上可用,在"roadmap.txt"文件中


contributors
==


ibmdbpy项目于2015年4月在IBM Deutschland Reasearch&Development,Bóblingen启动。
以下是对项目做出贡献的人员列表,按贡献的时间顺序排列:

-edouard fouché(核心)
-michael wurst(核心)
-william moore(文档)
-craig blaha(文档)
-rafael rodriguez morales(地理空间扩展Ion,Core)
-Avipsa Roy(地理空间扩展)
-Nicole Schoen(Core)
-Toni Bollinger(Core)


您想如何贡献?太好了!你可以做很多事情。

如果您是ibmdbanalytics组的成员,则可以创建分支并将它们合并到master。否则,可以派生项目并执行拉取请求。欢迎您对代码和文档做出贡献。

有很多方法可以做出贡献。如果您发现了错误并有改进的想法或需要一些新的特定功能,请打开一张罚单!我们真的很在乎。



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

推荐PyPI第三方库


热门话题
java Android首选项相同getPreference()值的不同数据   字符串如何在Java中连接两个列表中的单词   安卓 Java Socket编程:检测客户端和服务器是否连接   使用JTextField的java无法将值转换为int   在java中,如何在不通过超级构造函数设置的情况下将消息设置为自定义异常类   用于标识属性值的java正则表达式模式   Android中的java不可见谷歌地图   java正确取消启动ExecutorService的JavaFX任务   在非活动java类中使用安卓的融合位置提供程序,并在主活动类中获取经度和纬度   spring为什么我的大摇大摆不能用springboot在java中工作?   java JSF(2.2)ViewScope在Weblogic 12.2.1.2和JDK 8上使用Spring 4.3.7(在Mac OS和Docker Oracle Linux环境上)   java如何用一个按钮提高计时器速度   java如何检查字符是否是元音?   注册表引用了不存在的Java运行时环境安装或运行时已损坏错误   来自ResultSet java的mysql getDateTime   maven LanguageTool Java API是否具有“无用”依赖关系?   twitter api身份验证的java Trycatch问题   java在Apache Struts 1.1中是否可以显式白名单?   安卓致命异常:主java。lang.RuntimeException:被问及未知片段