历史时间序列的基于列的数据存储

corintick的Python项目详细描述


用于历史TimeSeries数据的基于列的数据存储。科林蒂克是 主要用于存储pandas 表示时间序列的数据帧。

安装

为了使用corentick,你需要mongodb。见安装 说明here

Corentick本身可以用pip

安装
$ pip install corintick

快速启动

初始化Corintick:

fromcorintickimportCorintickcorin=Corintick()

现在我们需要一个数据帧来插入到Corintick中。用于演示 目的,我们将从Quandl

importquandldf1=quandl.get('TSE/7203')

这里,df1看起来像这样:

              Open    High     Low   Close      Volume
Date
2012-08-23  3240.0  3270.0  3220.0  3260.0   4652200.0
2012-08-24  3225.0  3245.0  3210.0  3235.0   3659600.0
2012-08-27  3250.0  3280.0  3215.0  3220.0   3614600.0
2012-08-28  3235.0  3260.0  3150.0  3180.0   6759100.0
2012-08-29  3180.0  3195.0  3160.0  3175.0   2614800.0
2012-08-30  3180.0  3190.0  3160.0  3170.0   3291700.0
2012-08-31  3135.0  3155.0  3095.0  3095.0   5663800.0
...

写作

df1插入corentick很简单:

corin.write('7203.T',df1,source='Quandl',country='Japan')

传递给corintick.write的第一个参数是UID(通用 标识符),并且对于插入到给定时间序列中的每个时间序列都必须是唯一的 收藏。第二个参数是要插入的数据帧。这个 其余的关键字参数是可选的元数据标记,可以是 附加到数据框/文档以供查询。

读数

阅读科林蒂克的文章也很简单:

df2=corin.read('7203.T')

还可以将startend指定为ISO-8601日期时间字符串

df2=corin.read('7203.T',start='2014-01-01',end='2014-12-31')
              Open    High     Low   Close      Volume
2014-01-06  6360.0  6400.0  6280.0  6300.0  12249300.0
2014-01-07  6270.0  6340.0  6260.0  6270.0   7891400.0
2014-01-08  6310.0  6320.0  6260.0  6300.0   7184100.0
2014-01-09  6310.0  6340.0  6260.0  6270.0   8653000.0
2014-01-10  6260.0  6310.0  6250.0  6290.0   7815900.0
...
2014-12-24  7645.0  7687.0  7639.0  7657.0  9287900.0
2014-12-25  7600.0  7655.0  7597.0  7611.0  5362700.0
2014-12-26  7629.0  7700.0  7615.0  7696.0  6069100.0
2014-12-29  7740.0  7746.0  7565.0  7662.0  9942800.0
2014-12-30  7652.0  7674.0  7558.0  7558.0  7821200.0

…以及要检索的列:

df2=corin.read('7203.T',columns=['Close','Volume'],start='2017-05-10')
             Close      Volume
2017-05-10  6081.0   7823700.0
2017-05-11  6123.0  13511900.0
2017-05-12  6047.0   8216600.0
2017-05-15  6009.0   5925200.0
2017-05-16  6093.0   6449300.0
...

配置

默认情况下,corentick尝试使用在localhost:27017运行的mongodb实例。 这可以通过Corintick初始值设定项的hostport参数进行更改。 类似地,corentick使用的数据库默认为corintick,也可以使用 参数db。 假设db数据库中的所有数据都是corentick数据。避免任何 其他进程/应用程序向该数据库读/写数据

如果MongoDB安装程序需要身份验证,则可以使用^{TT14}$和^{TT15}$参数。

有关详细信息,请参见Corintick.__init__

收藏

Corentick可以使用多个集合来更好地组织数据。一个 Corentick集合与MongoDB集合相同在每个 集合中,对于给定的UID,只能存在单个数据文件/文档。 在一段时间内。

如果需要为同一个UID存储两种不同类型的数据 在重叠的时间范围内(即 一个给定的股票),您应该将两种不同类型的数据分为 不同的收藏

默认情况下,数据会写入corintick集合。 可以通过将字符串分配给 Corintick.default_collection

>>>corin.collection='another_collection'

也可以在方法调用的基础上指定集合:

df=corin.read('7203.T',collection='orderbook')
corin.write(df,collection='another_collection')

科林蒂克力学

在编写过程中,Corentick会执行以下操作:

  1. 获取输入数据帧并拆分成列
  2. 使用LZ4压缩算法序列化/压缩每个
  3. 生成包含二进制blob的MongoDB文档 对应于每个列和其他元数据

在阅读过程中,会发生相反的情况:

  1. 获取文档
  2. 数据被解压缩并转换回numpy数组
  3. 数据帧被重建并返回给用户

背景

科林蒂克的灵感来源于并致力于成为人类的简化版。 啊,我是Arctic

与北极的差异

科林蒂克有一个单一的存储引擎,这是基于列的,而不是 版本化,类似于北极的滴答声。但是,不同于 tickstore,它确实支持非数字的objectdtype列 将它们解析为MessagePack字符串对象

命名

科林蒂克从一开始就瞄准了基于列的数据存储。 “科林斯”是“科林斯”(罗马柱风格)和 “勾选”。

基准

TODO

  • vs流入B
  • vs vanila MongoDB
  • vs MySQL
  • vs kdb+(32位)

贡献

若要贡献,请在GitHub上分叉存储库,进行更改并 提交拉取请求。
科林蒂克还不是一个成熟的项目,所以只是提出一些问题 也非常感谢:)

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

推荐PyPI第三方库


热门话题
javascript如何找到socket。同一局域网上的IO服务器?   将Java代码格式化为Word/RTF格式   java学习对象以及如何将分配的变量封装到私有变量   java Websocket客户端不在Tomcat中工作   java如何在点击按钮时打开本机表情键盘?   java使用哪个Maven GlassFish插件?   Eclipse Java构建路径不允许添加外部JAR   继承Java6集合。勾选适当的用法   JavaApacheDateUtils:使用多个模式解析日期   java hibernate如何生成查询?   具有id或链接的java Dropbox下载文件或文件夹   java模态对话框未在PrimeFaces 5上显示   java将类对象转换为人类可读的字符串   更新数据库中字段的java通用方法   java无法通过Apache Tomcat访问网络文件夹