我们搜集金融数据,通常想要的是利用爬虫的方法。其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的。下面就class类在python中获取金融数据的方法为大家带来讲解。
使用tushare获取所有A股每日交易数据,保存到本地数据库,同时每日更新数据库;根据行情数据进行可视化和简单的策略分析与回测。由于篇幅有限,本文着重介绍股票数据管理(下载、数据更新)的面向对象编程应用实例。
#导入需要用到的模块 import numpy as np import pandas as pd from dateutil.parser import parse from datetime import datetime,timedelta #操作数据库的第三方包,使用前先安装pip install sqlalchemy from sqlalchemy import create_engine #tushare包设置 import tushare as ts token='输入你在tushare上获得的token' pro=ts.pro_api(token) #使用python3自带的sqlite数据库 #本人创建的数据库地址为c:zjydb_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): pass #代码省略
代码运行
#假设你将上述代码封装成class Data #保存在'C:zjydb_stock'目录下的down_data.py中 import sys #添加到当前工作路径 sys.path.append(r'C:zjydb_stock') #导入py文件中的Data类 from download_data import Data #实例类 data=Data() #data.save_sql() #只需运行一次即可 data.update_sql() data.info_sql()
补充:类的专有方法
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
本篇使用class类在python中获取金融数据的方法,到这里就全部分享给大家了。相信很多小伙伴已经用它开始采集金融数据了,结尾一些类的方法大家可以了解下,都是能经常用到的。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试