class类在python中获取金融数据的实例方法
我们搜集金融数据,通常想要的是利用爬虫的方法。其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的。下面就class类在python中获取金融数据的方法为大家带来讲解。
使用tushare获取所有A股每日交易数据,保存到本地数据库,同时每日更新数据库;根据行情数据进行可视化和简单的策略分析与回测。由于篇幅有限,本文着重介绍股票数据管理(下载、数据更新)的面向对象编程应用实例。
#导入需要用到的模块 importnumpyasnp importpandasaspd fromdateutil.parserimportparse fromdatetimeimportdatetime,timedelta #操作数据库的第三方包,使用前先安装pipinstallsqlalchemy fromsqlalchemyimportcreate_engine #tushare包设置 importtushareasts token='输入你在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) classData(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() #获取股票代码列表 defget_code(self): codes=pro.stock_basic(list_status='L').ts_code.values returncodes #获取股票交易日历 defget_cals(self): #获取交易日历 cals=pro.trade_cal(exchange='') cals=cals[cals.is_open==1].cal_date.values returncals #每日行情数据 defdaily_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)#合并数据 exceptExceptionase: print(code) print(e) returndf #保存数据到数据库 defsave_sql(self): forcodeinself.codes: data=self.daily_data(code) data.to_sql(self.table_name,engine, index=False,if_exists='append') #获取最新交易日期 defget_trade_date(self): #获取当天日期时间 pass #更新数据库数据 defupdate_sql(self): pass#代码省略 #查询数据库信息 definfo_sql(self):
代码运行
#假设你将上述代码封装成classData #保存在'C:\zjy\db_stock'目录下的down_data.py中 importsys #添加到当前工作路径 sys.path.append(r'C:\zjy\db_stock') #导入py文件中的Data类 fromdownload_dataimportData #实例类 data=Data() #data.save_sql()#只需运行一次即可 data.update_sql() data.info_sql()
实例扩展:
Python下,pandas_datareader模块可以用于获取研究数据。例子如下:
>>>frompandas_datareader.dataimportDataReader >>> >>>datas=DataReader(name='AAPL',data_source='yahoo',start='2018-01-01') >>> >>>type(datas)>>>datas OpenHighLowCloseAdjClose\ Date 2018-01-02170.160004172.300003169.259995172.259995172.259995 2018-01-03172.529999174.550003171.960007172.229996172.229996 2018-01-04172.539993173.470001172.080002173.029999173.029999 2018-01-05173.440002175.369995173.050003175.000000175.000000 2018-01-08174.350006175.610001173.929993174.350006174.350006 2018-01-09174.550003175.059998173.410004174.330002174.330002 2018-01-10173.160004174.300003173.000000174.289993174.289993 2018-01-11174.589996175.490005174.490005175.279999175.279999 2018-01-12176.179993177.360001175.649994177.089996177.089996 Volume Date 2018-01-0225555900 2018-01-0329517900 2018-01-0422434600 2018-01-0523660000 2018-01-0820567800 2018-01-0921584000 2018-01-1023959900 2018-01-1118667700 2018-01-1225226000 >>> >>>print(datas.to_csv()) Date,Open,High,Low,Close,AdjClose,Volume 2018-01-02,170.160004,172.300003,169.259995,172.259995,172.259995,25555900 2018-01-03,172.529999,174.550003,171.960007,172.229996,172.229996,29517900 2018-01-04,172.539993,173.470001,172.080002,173.029999,173.029999,22434600 2018-01-05,173.440002,175.369995,173.050003,175.0,175.0,23660000 2018-01-08,174.350006,175.610001,173.929993,174.350006,174.350006,20567800 2018-01-09,174.550003,175.059998,173.410004,174.330002,174.330002,21584000 2018-01-10,173.160004,174.300003,173.0,174.289993,174.289993,23959900 2018-01-11,174.589996,175.490005,174.490005,175.279999,175.279999,18667700 2018-01-12,176.179993,177.360001,175.649994,177.089996,177.089996,25226000 >>>
到此这篇关于class类在python中获取金融数据的实例方法的文章就介绍到这了,更多相关class类怎样在python中获取金融数据内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!