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自动化测试实例解析
Sep 28 Python
Python实现拼接多张图片的方法
Dec 01 Python
利用Python实现Windows定时关机功能
Mar 21 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python面试题之列表声明实例分析
Jul 08 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
Python学习之os模块及用法
Jun 03 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
Python 键盘事件详解
Nov 11 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
js URL参数的拼接方法比较
2012/02/15 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
python中的测试框架
2020/11/13 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
学校群众路线专项整治方案
2014/10/31 职场文书
考研英语复习计划
2015/01/19 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技