自己动手写股票数据分析软件之数据获取

本文介绍了如何使用Python的Tushare库获取沪深上市公司的股票数据,并将其存储到MySQL数据库中,包括股票列表、行业分类和历史交易数据。内容涉及Python环境配置、数据库设置以及数据存储的注意事项。
部署运行你感兴趣的模型镜像

前言

本文旨在分享编程经验,非炒股指导软件。

一、Tushare数据介绍

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。

二、IDE环境介绍

1、python 3.7

tushare接口为python接口,为了比较方便的获取数据,该系统为python+java环境。python主要用于股票数据获取和数据分析,java主要用于网站的搭建及结果的展示。

2、mysql数据库

用于存储历史股票数据(近3年)和新闻舆论信息。

注意:若mysql数据库中存储中文,请使用utf8的方式创建:

CREATE DATABASE tushare DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

3、工具环境配置(pycharm + anaconda)

为了使用pyhton tushare工具包,安装了anaconda工具,在pycharm中需要配置anaconda所在的环境,如图:

三、数据存储

本博客主要使用3张表,股票列表、行业分类和历史数据3张表

1、股票列表(沪深上市公司的基本情况)

code,代码
name,名称
industry,所属行业
area,地区
pe,市盈率
outstanding,流通股本(亿)
totals,总股本(亿)
totalAssets,总资产(万)
liquidAssets,流动资产
fixedAssets,固定资产
reserved,公积金
reservedPerShare,每股公积金
esp,每股收益
bvps,每股净资
pb,市净率
timeToMarket,上市日期
undp,未分利润
perundp, 每股未分配
rev,收入同比(%)
profit,利润同比(%)
gpr,毛利率(%)
npr,净利润率(%)
holders,股东人数

将数据存储到数据库python代码

def getStockBasic():
    df = ts.get_stock_basics()
    engine = create_engine('mysql://root:root@127.0.0.1/tushare?charset=utf8')
    df.to_sql('stock_basics', engine, if_exists='append')

注意1:若没有提前建立数据表,该方法会自动在数据库中创建表。但可能没写字段无法自动对应,需要后期修改数据表。

注意2:该数据库请使用utf8的方式创建,否则在存储中文的时候,会失败。

CREATE DATABASE tushare DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2、行业分类表

  • code:股票代码
  • name:股票名称
  • c_name:行业名称

行业分类信息如下

将数据存储到数据库python代码

def getIndustryClassified():
    df = ts.get_industry_classified()
    engine = create_engine('mysql://root:root@127.0.0.1/tushare?charset=utf8')
    df.to_sql('industry_classified', engine, if_exists='append')

3、历史数据表(该接口提供最近3年的历史成交数据)

  • date:日期
  • open:开盘价
  • high:最高价
  • close:收盘价
  • low:最低价
  • volume:成交量
  • price_change:价格变动
  • p_change:涨跌幅
  • ma5:5日均价
  • ma10:10日均价
  • ma20:20日均价
  • v_ma5:5日均量
  • v_ma10:10日均量
  • v_ma20:20日均量
  • turnover:换手率[注:指数无此项]
#获取所有股票的历史数据
def getHistDataAll():
    #从数据库读取所有股票代码
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "root", "root", "tushare", charset='utf8')
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    # 使用execute方法执行SQL语句
    sql = "select code from tushare.stock_basics"
    cursor.execute(sql)
    # 使用 fetchone() 方法获取所有数据
    data = cursor.fetchall()
    for da in data:
        getHistData(da[0])
    # 关闭数据库连接
    db.close()

# 获取每只股票的历史数据
def getHistData(code):
    df = ts.get_hist_data(code)
    if df is not None:
        df.insert(0, 'code', code)
        engine = create_engine('mysql://root:root@127.0.0.1/tushare?charset=utf8')
        # 存入数据库
        df.to_sql('hist_data', engine, if_exists='append')

该表大约有200W条数据,在获取数据时,需要等待一段时间。

若考虑到每天自动同步历史数据的话,需要写一个定时任务,来自动同步每天数据。

(后续补充...)

若需要获取其他数据,可以从tushare网站自主选择添加。

相关问题,可QQ交流:1931969006

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值