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编程中一些重用与缩减的建议
Apr 14 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Python类super()及私有属性原理解析
Jun 15 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
Python3 如何开启自带http服务
May 18 Python
如何利用Python实现一个论文降重工具
Jul 09 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截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
PHP crc32()函数讲解
2019/02/14 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
医学生实习自我鉴定
2013/09/27 职场文书
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
詹天佑教学反思
2014/04/30 职场文书
食品安全承诺书
2014/05/22 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android