TuShare(2):使用TuShare,抓取股票数据并存储到数据库

简介: 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50904965 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys1,关于股票数据存储股票数据比较特殊,需要做数据统计的。都需要一次进行批量查询多个数据,然后进行分析。 所以股票数据不一定要放到数

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50904965 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于股票数据存储


股票数据比较特殊,需要做数据统计的。都需要一次进行批量查询多个数据,然后进行分析。
所以股票数据不一定要放到数据库中存储。因为一般就两个维度。
那只股票,和那天的股票信息,然后使用模型进行分析预测。
所以数据可以存储为:/data/stock/yyyy/yyyMM/yyyyMMdd.hdf5
存储的数据是hdf5:
Hierarchical Data Format,可以存储不同类型的图像和数码数据的文件格式

2,安装hdf5库


#首先安装hdf5库
yum -y install hdf5 hdf5-devel
pip install unittest2
pip install --upgrade  tables

3,测试读写hdf5文件


参考pytables官方文档。
http://www.pytables.org/usersguide/tutorials.html
这里使用的是pandas封装的接口直接使用,而不是使用tables。

# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import pandas as pd
###su
>>> a = np.random.standard_normal((9,4))
>>> b = pd.DataFrame(a)
>>> b.columns = [['num1','num2','num3','num4']]
>>> a
array([[-2.36198849, -1.27547933, -1.40351822, -0.6638619 ],
       [ 1.89159066, -0.31838519, -0.2065942 , -1.02327987],
       [-2.02771503, -0.81333254, -0.93644288, -0.91592467],
       [-1.3939496 ,  0.25899342,  1.11591841, -0.7423286 ],
       [-1.05104415, -0.79069151, -1.46536873, -0.01449547],
       [ 1.32483444,  0.32030117, -1.23575344,  0.51455106],
       [ 0.91297435,  0.43242834,  1.77235337,  1.14879289],
       [ 0.93476429,  0.18592698,  0.30198234, -0.61861642],
       [ 0.04462872, -0.99275411, -0.86382085, -1.53064223]])
>>> b
       num1      num2      num3      num4
0 -2.361988 -1.275479 -1.403518 -0.663862
1  1.891591 -0.318385 -0.206594 -1.023280
2 -2.027715 -0.813333 -0.936443 -0.915925
3 -1.393950  0.258993  1.115918 -0.742329
4 -1.051044 -0.790692 -1.465369 -0.014495
5  1.324834  0.320301 -1.235753  0.514551
6  0.912974  0.432428  1.772353  1.148793
7  0.934764  0.185927  0.301982 -0.618616
8  0.044629 -0.992754 -0.863821 -1.530642
>>> b.sum()
num1   -1.725905
num2   -2.992993
num3   -2.921244
num4   -3.845805
dtype: float64
>>> b.mean()
num1   -0.191767
num2   -0.332555
num3   -0.324583
num4   -0.427312
dtype: float64

###写hdf5文件:
>>> h5 = pd.HDFStore('/data/stock/test1.h5','w')
>>> h5['data'] = b
>>> h5.close()
>>> 
>>> b
       num1      num2      num3      num4
0 -2.361988 -1.275479 -1.403518 -0.663862
1  1.891591 -0.318385 -0.206594 -1.023280
2 -2.027715 -0.813333 -0.936443 -0.915925
3 -1.393950  0.258993  1.115918 -0.742329
4 -1.051044 -0.790692 -1.465369 -0.014495
5  1.324834  0.320301 -1.235753  0.514551
6  0.912974  0.432428  1.772353  1.148793
7  0.934764  0.185927  0.301982 -0.618616
8  0.044629 -0.992754 -0.863821 -1.530642

###读hdf5文件。
>>> h5 = pd.HDFStore('/data/stock/test1.h5','r')
>>> c = h5['data']
>>> c
       num1      num2      num3      num4
0 -2.361988 -1.275479 -1.403518 -0.663862
1  1.891591 -0.318385 -0.206594 -1.023280
2 -2.027715 -0.813333 -0.936443 -0.915925
3 -1.393950  0.258993  1.115918 -0.742329
4 -1.051044 -0.790692 -1.465369 -0.014495
5  1.324834  0.320301 -1.235753  0.514551
6  0.912974  0.432428  1.772353  1.148793
7  0.934764  0.185927  0.301982 -0.618616
8  0.044629 -0.992754 -0.863821 -1.530642
>>> h5.close()

4,TuShare读取股票数据存储


>>> import tushare as ts
>>> d = ts.get_tick_data('600848',date='2015-01-09')
>>> type(d)
<class 'pandas.core.frame.DataFrame'>
>>> len(d)
1212
###保存数据
>>> h5 = pd.HDFStore('/data/stock/test2.h5','w')
>>> h5['data'] = d
>>> h5.close()
>>> 
>>> 
###读取数据
>>> h5 = pd.HDFStore('/data/stock/test2.h5','r')
>>> e = h5['data']
>>> h5.close()
>>> 
>>> type(e)
<class 'pandas.core.frame.DataFrame'>
>>> len(e)
1212

5,总结


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50904965 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

使用文件直接存储到本地还是非常方便的。pandas直接封装的函数3行解决问题。
同时pandas封装的读出数据还是数组,可以直接进行操作。灰常方便。

目录
相关文章
|
14天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
16天前
|
关系型数据库 数据库
关系型数据库的数据完整性
关系型数据库通过一系列机制和技术手段来确保数据的完整性,从而为用户提供准确、一致和可靠的数据服务。这些措施对于保障数据的质量、满足用户需求以及维护系统的稳定运行具有重要意义。
20 5
|
19天前
|
存储 安全 数据管理
新型数据库技术:基于区块链的分布式数据存储系统
传统数据库系统面临着中心化管理、数据安全性和可信度等方面的挑战。本文介绍了一种基于区块链技术的新型数据库系统,通过分布式存储和去中心化的特性,提高了数据的安全性和可信度,同时实现了高效的数据管理和共享。该系统在多个领域如金融、医疗和物联网等具有广阔的应用前景。
|
19天前
|
关系型数据库 Apache 流计算
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
19天前
|
SQL Oracle 关系型数据库
关系型数据库根据某些条件修改数据
SQL的`UPDATE`语句用于根据条件修改关系型数据库(如MySQL、PostgreSQL、Oracle)中的数据。基本语法是:`UPDATE 表名 SET 列名=新值 WHERE 条件`。例如,要将`students`表中名字为&quot;John Doe&quot;的学生年龄改为25,可以使用`UPDATE students SET age = 25 WHERE name = &#39;John Doe&#39;`。执行`UPDATE`前需备份数据,先在测试环境验证,并考虑事务处理以确保数据安全。注意优化表结构和使用索引来提升性能。
15 3
|
2天前
|
存储 负载均衡 监控
关系型数据库搭建高可用存储集群
关系型数据库搭建高可用存储集群
18 4
|
11天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
4天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
10 0
|
10天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
11天前
|
存储 SQL 关系型数据库
存储系统、数据库和对象存储 | 青训营
存储系统、数据库和对象存储 | 青训营