class类在python中获取金融数据的实例方法


Posted in Python onDecember 10, 2020

我们搜集金融数据,通常想要的是利用爬虫的方法。其实我们最近所学的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:\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 \
Date
2018-01-02 170.160004 172.300003 169.259995 172.259995 172.259995
2018-01-03 172.529999 174.550003 171.960007 172.229996 172.229996
2018-01-04 172.539993 173.470001 172.080002 173.029999 173.029999
2018-01-05 173.440002 175.369995 173.050003 175.000000 175.000000
2018-01-08 174.350006 175.610001 173.929993 174.350006 174.350006
2018-01-09 174.550003 175.059998 173.410004 174.330002 174.330002
2018-01-10 173.160004 174.300003 173.000000 174.289993 174.289993
2018-01-11 174.589996 175.490005 174.490005 175.279999 175.279999
2018-01-12 176.179993 177.360001 175.649994 177.089996 177.089996

       Volume
Date
2018-01-02 25555900
2018-01-03 29517900
2018-01-04 22434600
2018-01-05 23660000
2018-01-08 20567800
2018-01-09 21584000
2018-01-10 23959900
2018-01-11 18667700
2018-01-12 25226000
>>>
>>> print(datas.to_csv())
Date,Open,High,Low,Close,Adj Close,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中获取金融数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
通过python下载FTP上的文件夹的实现代码
Feb 10 Python
python中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Python中extend和append的区别讲解
Jan 24 Python
python版DDOS攻击脚本
Jun 12 Python
Python实现最常见加密方式详解
Jul 13 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
Python制作简单的剪刀石头布游戏
Dec 10 #Python
python给list排序的简单方法
Dec 10 #Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 #Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 #Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 #Python
python 实现ping测试延迟的两种方法
Dec 10 #Python
弄清Pytorch显存的分配机制
Dec 10 #Python
You might like
PHP制作用户注册系统
2015/10/23 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
继续学习javascript闭包
2015/12/03 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
船舶专业个人求职信范文
2014/01/02 职场文书
担保书格式及范文
2014/04/01 职场文书
工地安全生产标语
2014/06/06 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
班主任先进事迹材料
2014/12/17 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书