发布网友 发布时间:2022-04-23 22:56
共5个回答
懂视网 时间:2022-05-03 09:31
很简单的用本地Sqlite查找股票数据。
DataSource类,返回的是Dataframe物件。这个Dataframe物件,在之后的业务,如计算股票指标,还需要特别处理。
import os import sqlite3 as sqlite3 import numpy as np import pandas as pd # 数据源 class DataSource: def __init__(self): self.db = None # 数据库 self.cursor = None # 指针 self.stocks = {} # 股票池 self.indexs = {} # 指数池 self.name = ‘unit_test.db‘ # 数据源名称 def connect(self): self.db = sqlite3.connect(os.path.abspath(self.name)) self.cursor = self.db.cursor() def get_stocks(self, ucodes): # 股票池 try: self.stocks = {} self.connect() self.db.row_factory = lambda cursor, row: row[0] for ucode in ucodes: sql = """SELECT t.code, t.lot, t.nmll, t.stime, t.high, t.low, t.open, t.close, t.volume FROM (SELECT n.code, n.lot, n.nmll, c.stime, c.high, c.low, c.open, c.close, c.volume FROM s_{} AS c INNER JOIN name AS n ON c.code=n.code ORDER BY c.stime DESC LIMIT 365*20) AS t /*INNER JOIN financial AS f ON t.code=f.code AND substr(t.stime,1,4)=f.year*/ ORDER BY t.stime""".format(ucode) self.cursor.execute(sql) columns = [‘code‘, ‘lot‘, ‘nmll‘, ‘sdate‘, ‘high‘, ‘low‘, ‘open‘, ‘last‘, ‘vol‘] self.stocks[ucode] = pd.DataFrame(self.cursor.fetchall(), columns=columns) self.db.commit() self.cursor.close() self.db.close() return self.stocks except sqlite3.Error as e: print(e) def get_indexs(self, indexs): try: # 指数池 self.indexs = {} self.connect() self.db.row_factory = lambda cursor, row: row[0] for index in indexs: sql = """SELECT t.code, t.lot, t.nmll, t.stime, t.high, t.low, t.open, t.close, t.volume FROM (SELECT n.code, n.lot, n.nmll, c.stime, c.high, c.low, c.open, c.close, c.volume FROM s_{} AS c INNER JOIN name AS n ON c.code=n.code ORDER BY c.stime DESC LIMIT 365*20) AS t /*INNER JOIN financial AS f ON t.code=f.code AND substr(t.stime,1,4)=f.year*/ ORDER BY t.stime""".format(index.upper()) self.cursor.execute(sql) columns = [‘code‘, ‘lot‘, ‘nmll‘, ‘sdate‘, ‘high‘, ‘low‘, ‘open‘, ‘last‘, ‘vol‘] self.indexs[index] = pd.DataFrame(self.cursor.fetchall(), columns=columns) self.db.commit() self.cursor.close() self.db.close() return self.indexs except sqlite3.Error as e: print(e) data_source = DataSource() df1 = data_source.get_stocks([‘00700‘]) df2 = data_source.get_indexs([‘hsi‘])
python+Sqlite+Dataframe打造金融股票数据结构
标签:font commit 5* com import open print rom tor
热心网友 时间:2022-05-03 06:39
首先你需要知道哪个网站上有所有股票代码,然后分析这个网站股票代码的存放方式,再利用python写一个爬虫去爬取所有的股票代码
热心网友 时间:2022-05-03 07:57
内置sqlite库,其他数据库需要自己安装,常用的都支持 mysql
热心网友 时间:2022-05-03 09:32
现在应该很少人用爬虫了吧。。。都有现成的数据接口的啊。。。
如果你是自己搭建平台或者用三方回测框架的话,可以考虑用市面上一些数据服务商提供的数据接口来获取。聚宽的JQData就挺靠谱,提供全面的基础金融数据
热心网友 时间:2022-05-03 11:23
import tushare as ts
ts.get_stock_basics()
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
Tushare从发布到现在,已经帮助很多用户在数据方面降低了工作压力,同时也得到很多用户的反馈,Tushare将一如既往的用免费和开源的形式分享出来,希望对有需求的人带来一些帮助。如果您觉得Tushare好用并有所收获,请通过微博、微信或者网站博客的方式分享出去,让更多的人了解和使用它,使它能在大家的使用过程中逐步得到改进和提升。Tushare还在不断的完善和优化,后期将逐步增加港股、期货、外汇和基金方面的数据,所以,您的支持和肯定才是Tushare坚持下去的动力。
Tushare的数据主要来源于网络,如果在使用过程碰到数据无法获取或发生数据错误的情况请联系我,如果有什么好的建议和意见,也请及时联系我,在此谢过。 如果在pandas/NumPy技术上有问题,欢迎加入“pandas数据分析”QQ群:297882961(已满),Tushare用户一群:14934432(已满)。 为了减少广告和无关的讨论,还特地建立了一个收费群“Tushare高级用户群”:658562506,每人50元,会员能获得更多数据和技术相关服务,同时定期组织线下交流活动。费用将用于Tushare服务器和带宽升级。 另外,请扫码关注“挖地兔”的微信公众号,定期会发布Tushare的最新动态及有价值的金融数据分析与处理方面的教程和文章。
网页链接