时间:2021-05-22
我们搜集金融数据,通常想要的是利用爬虫的方法。其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的。下面就class类在python中获取金融数据的方法为大家带来讲解。
使用tushare获取所有A股每日交易数据,保存到本地数据库,同时每日更新数据库;根据行情数据进行可视化和简单的策略分析与回测。由于篇幅有限,本文着重介绍股票数据管理(下载、数据更新)的面向对象编程应用实例。
#导入需要用到的模块import numpy as npimport pandas as pdfrom dateutil.parser import parsefrom datetime import datetime,timedelta#操作数据库的第三方包,使用前先安装pip install sqlalchemyfrom sqlalchemy import create_engine#tushare包设置import tushare as tstoken='输入你在tushare上获得的token'pro=ts.pro_api(token)#使用python3自带的sqlite数据库#本人创建的数据库地址为c:\zjy\db_stock\file='sqlite:///c:\\zjy\\db_stock\\'#数据库名称db_name='stock_data.db'engine = create_engine(file+db_name)class Data(object): def __init__(self, start='20050101', end='20191115', table_name='daily_data'): self.start=start self.end=end self.table_name=table_name self.codes=self.get_code() self.cals=self.get_cals() #获取股票代码列表 def get_code(self): codes = pro.stock_basic(list_status='L').ts_code.values return codes #获取股票交易日历 def get_cals(self): #获取交易日历 cals=pro.trade_cal(exchange='') cals=cals[cals.is_open==1].cal_date.values return cals #每日行情数据 def daily_data(self,code): try: df0=pro.daily(ts_code=code,start_date=self.start, end_date=self.end) df1=pro.adj_factor(ts_code=code,trade_date='') #复权因子 df=pd.merge(df0,df1) #合并数据 except Exception as e: print(code) print(e) return df #保存数据到数据库 def save_sql(self): for code in self.codes: data=self.daily_data(code) data.to_sql(self.table_name,engine, index=False,if_exists='append') #获取最新交易日期 def get_trade_date(self): #获取当天日期时间 pass #更新数据库数据 def update_sql(self): pass #代码省略 #查询数据库信息 def info_sql(self):代码运行
#假设你将上述代码封装成class Data#保存在'C:\zjy\db_stock'目录下的down_data.py中import sys#添加到当前工作路径sys.path.append(r'C:\zjy\db_stock')#导入py文件中的Data类from download_data import Data#实例类data=Data()#data.save_sql() #只需运行一次即可data.update_sql() data.info_sql()实例扩展:
Python下,pandas_datareader模块可以用于获取研究数据。例子如下:
>>> from pandas_datareader.data import DataReader>>>>>> datas = DataReader(name='AAPL', data_source='yahoo', start='2018-01-01')>>>>>> type(datas)<class 'pandas.core.frame.DataFrame'>>>> datas Open High Low Close Adj Close \Date2018-01-02 170.160004 172.300003 169.259995 172.259995 172.2599952018-01-03 172.529999 174.550003 171.960007 172.229996 172.2299962018-01-04 172.539993 173.470001 172.080002 173.029999 173.0299992018-01-05 173.440002 175.369995 173.050003 175.000000 175.0000002018-01-08 174.350006 175.610001 173.929993 174.350006 174.3500062018-01-09 174.550003 175.059998 173.410004 174.330002 174.3300022018-01-10 173.160004 174.300003 173.000000 174.289993 174.2899932018-01-11 174.589996 175.490005 174.490005 175.279999 175.2799992018-01-12 176.179993 177.360001 175.649994 177.089996 177.089996 VolumeDate2018-01-02 255559002018-01-03 295179002018-01-04 224346002018-01-05 236600002018-01-08 205678002018-01-09 215840002018-01-10 239599002018-01-11 186677002018-01-12 25226000>>>>>> print(datas.to_csv())Date,Open,High,Low,Close,Adj Close,Volume2018-01-02,170.160004,172.300003,169.259995,172.259995,172.259995,255559002018-01-03,172.529999,174.550003,171.960007,172.229996,172.229996,295179002018-01-04,172.539993,173.470001,172.080002,173.029999,173.029999,224346002018-01-05,173.440002,175.369995,173.050003,175.0,175.0,236600002018-01-08,174.350006,175.610001,173.929993,174.350006,174.350006,205678002018-01-09,174.550003,175.059998,173.410004,174.330002,174.330002,215840002018-01-10,173.160004,174.300003,173.0,174.289993,174.289993,239599002018-01-11,174.589996,175.490005,174.490005,175.279999,175.279999,186677002018-01-12,176.179993,177.360001,175.649994,177.089996,177.089996,25226000>>>到此这篇关于class类在python中获取金融数据的实例方法的文章就介绍到这了,更多相关class类怎样在python中获取金融数据内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、获取Class对象在JavaAPI中,提供了获取Class类对象的三种方法:第一种,使用Class.forName静态方法。前提:已明确类的全路径名。第二种
一.Python的类和实例在面向对象中,最重要的概念就是类(class)和实例(instance),类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”
本文实例讲述了Python中Class类用法。分享给大家供大家参考,具体如下:尽管Python在FunctionProgramming中有着其他语言难以企及的的
本文实例讲述了Python面向对象类编写技术细节。分享给大家供大家参考,具体如下:类代码编写细节继续学习类、方法和继承。class语句以下是class语句的一般
本文实例讲述了Python中类的创建和实例化操作。分享给大家供大家参考,具体如下:python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带