Focus On Oracle

Installing, Backup & Recovery, Performance Tuning,
Troubleshooting, Upgrading, Patching

Oracle Engineered System


当前位置: 首页 » 技术文章 » Big Data

Get financial data by tushare

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工、数据存储(可以保存成excel csv mysql mongdb json oracle)等功能。不管你正在学习或者是使用Python做数据分析,这种获取的数据的方法都适用。为分析人员在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用NumPy/Pandas/Matplotlib进行数据分析和可视化。

前期准备
  安装Python
  安装pandas
  lxml也是必须的,正常情况下安装了Anaconda后无须单独安装,如果没有可执行:pip install lxml

建议:直接安装Anaconda,一次安装包括了Python环境和全部依赖包。

anaconda包括了很多经常用到的包,比如Blaze,Bokeh,Canopy,Ipython,Matplotlib,Nose,Numba,Numpy,Pandas,Scikit,Scipy,Statsmodels,Sympy

安装tushare
    pip install tushare
[root@xd07dbm01 ~]# pip install tushare
Collecting tushare
  Downloading https://files.pythonhosted.org/packages/d8/38/8a36e3dffe49dd91a9a9b81248af741e3f4e42256246bf5ac0da6b019142/tushare-1.2.21.tar.gz (162kB)
    100% |████████████████████████████████| 163kB 811kB/s
Collecting pandas>=0.18.0 (from tushare)
  Downloading https://files.pythonhosted.org/packages/c0/f7/7fd96f43d84a22d068fc999f2ae27f677be4c9501441f5b7870b75842fa4/pandas-0.24.1-cp37-cp37m-manylinux1_x86_64.whl (10.1MB)
    100% |████████████████████████████████| 10.1MB 700kB/s
Collecting requests>=2.0.0 (from tushare)
  Downloading https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl (57kB)
    100% |████████████████████████████████| 61kB 263kB/s
Collecting lxml>=3.8.0 (from tushare)
  Downloading https://files.pythonhosted.org/packages/af/f7/1d7dc440f4e1b1362c3577b4cf6807fd036d241c33754a8e4769f51172e7/lxml-4.3.2-cp37-cp37m-manylinux1_x86_64.whl (5.7MB)
    100% |████████████████████████████████| 5.7MB 507kB/s
Collecting simplejson>=3.16.0 (from tushare)
  Downloading https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz (81kB)
    100% |████████████████████████████████| 81kB 421kB/s
Collecting msgpack>=0.5.6 (from tushare)
  Downloading https://files.pythonhosted.org/packages/a8/7b/630049fc4af9e68a625738612edc264ce7cb586c5001a2d4d2209a4f61c1/msgpack-0.6.1-cp37-cp37m-manylinux1_x86_64.whl (245kB)
    100% |████████████████████████████████| 245kB 466kB/s
Collecting pyzmq>=16.0.0 (from tushare)
  Downloading https://files.pythonhosted.org/packages/3c/72/1259cea3a7bc0ace82afd2244fdc448c4c2fb6b49a14e87ba832e00ee86a/pyzmq-18.0.1-cp37-cp37m-manylinux1_x86_64.whl (1.1MB)
    100% |████████████████████████████████| 1.1MB 593kB/s
Collecting python-dateutil>=2.5.0 (from pandas>=0.18.0->tushare)
  Downloading https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl (226kB)
    100% |████████████████████████████████| 235kB 628kB/s
Collecting numpy>=1.12.0 (from pandas>=0.18.0->tushare)
  Downloading https://files.pythonhosted.org/packages/91/e7/6c780e612d245cca62bc3ba8e263038f7c144a96a54f877f3714a0e8427e/numpy-1.16.2-cp37-cp37m-manylinux1_x86_64.whl (17.3MB)
    100% |████████████████████████████████| 17.3MB 743kB/s
Collecting pytz>=2011k (from pandas>=0.18.0->tushare)
  Downloading https://files.pythonhosted.org/packages/61/28/1d3920e4d1d50b19bc5d24398a7cd85cc7b9a75a490570d5a30c57622d34/pytz-2018.9-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 892kB/s
Collecting certifi>=2017.4.17 (from requests>=2.0.0->tushare)
  Downloading https://files.pythonhosted.org/packages/9f/e0/accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a/certifi-2018.11.29-py2.py3-none-any.whl (154kB)
    100% |████████████████████████████████| 163kB 6.1MB/s
Collecting urllib3<1.25,>=1.21.1 (from requests>=2.0.0->tushare)
  Downloading https://files.pythonhosted.org/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl (118kB)
    100% |████████████████████████████████| 122kB 1.2MB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.0.0->tushare)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 654kB/s
Collecting idna<2.9,>=2.5 (from requests>=2.0.0->tushare)
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 640kB/s
Collecting six>=1.5 (from python-dateutil>=2.5.0->pandas>=0.18.0->tushare)
  Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Building wheels for collected packages: tushare, simplejson
  Building wheel for tushare (setup.py) ... done
  Stored in directory: /root/.cache/pip/wheels/c1/0d/95/a0f892fd23e1e99449ba477d92675580939fccda1d404e381f
  Building wheel for simplejson (setup.py) ... done
  Stored in directory: /root/.cache/pip/wheels/5d/1a/1e/0350bb3df3e74215cd91325344cc86c2c691f5306eb4d22c77
Successfully built tushare simplejson
Installing collected packages: six, python-dateutil, numpy, pytz, pandas, certifi, urllib3, chardet, idna, requests, lxml, simplejson, msgpack, pyzmq, tushare
Successfully installed certifi-2018.11.29 chardet-3.0.4 idna-2.8 lxml-4.3.2 msgpack-0.6.1 numpy-1.16.2 pandas-0.24.1 python-dateutil-2.8.0 pytz-2018.9 pyzmq-18.0.1 requests-2.21.0 simplejson-3.16.0 six-1.12.0 tushare-1.2.21 urllib3-1.24.1
[root@xd07dbm01 ~]#
升级tushare(可选步骤)
    pip install tushare –upgrade
快速上手

下面的内容是获取600848的历史数据,然后在屏幕上打印,再写入csv xlsx文件

[root@xd07dbm01 ~]# cat 600848.py

import tushare as ts
data=ts.get_hist_data('600848')
print(data)
data.to_csv('/opt/600848.csv') #
data.to_excel('/opt/600848.xlsx')

下面的内容是将获取600848,000456的数据写入bigfiel.csv,如果存在则追加

import tushare as ts
import os
filename = '/opt/bigfile.csv'
for code in ['600848', '000456']:
    data = ts.get_hist_data(code)
    if os.path.exists(filename):
        data.to_csv(filename, mode='a', header=None)
    else:
        data.to_csv(filename)
将数据吸入MySQL数据库
from sqlalchemy import create_engine
import tushare as ts
data = ts.get_tick_data('600848', date='2019-03-23')
#engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8')
data.to_sql('tick_data',engine)
data.to_sql('tick_data',engine,if_exists='append')

下面是python常用的工具,有了数据,就可以用工具做事了
机器学习和计算机视觉
Crab:灵活、快速的推荐引擎
gensim:人性化的话题建模库
hebel:GPU 加速的深度学习库
NuPIC:智能计算 Numenta 平台
pattern:Python 网络挖掘模块
PyBrain:另一个 Python 机器学习库
Pylearn2:一个基于 Theano 的机器学习库
python-recsys:一个用来实现推荐系统的 Python 库
scikit-learn:基于 SciPy 构建的机器学习 Python 模块
pydeep:Python 深度学习库
vowpalporpoise:轻量级 Vowpal Wabbit 的 Python 封装
skflow:一个 TensorFlow 的简化接口(模仿 scikit-learn)
Caffe: 一个 Caffe 的python接口
OpenCV:开源计算机视觉库
pyocr:Tesseract 和 Cuneiform 的包装库
pytesseract:Google Tesseract OCR 的另一包装库
SimpleCV:一个用来创建计算机视觉应用的开源框架

数据分析
blaze:NumPy 和 Pandas 的大数据接口
cclib:一个用来解析和解释计算化学软件包输出结果的库
NetworkX:一个为复杂网络设计的高性能软件
Neupy:执行和测试各种不同的人工神经网络算法
Numba:Python JIT (just in time) 编译器,针对科学用的 Python ,由Cython 和 NumPy 的开发者开发
NumPy:使用 Python 进行科学计算的基础包
Open Babel:一个化学工具箱,用来描述多种化学数据
Open Mining:使用 Python 挖掘商业情报 (BI) (Pandas web 接口)
orange:通过可视化编程或 Python 脚本进行数据挖掘,数据可视化,分析和机器学习
Pandas:提供高性能,易用的数据结构和数据分析工具
PyDy:PyDy 是 Python Dynamics 的缩写,用来为动力学运动建模工作流程提供帮助, 基于 NumPy, SciPy, IPython 和 matplotlib
PyMC:马尔科夫链蒙特卡洛采样工具
RDKit:化学信息学和机器学习软件
SciPy:由一些基于 Python ,用于数学,科学和工程的开源软件构成的生态系统
statsmodels:统计建模和计量经济学
SymPy:一个用于符号数学的 Python 库
cclib:一个用来解析和解释计算化学软件包输出结果的库
NetworkX:一个为复杂网络设计的高性能软件
Neupy:执行和测试各种不同的人工神经网络算法
Numba:Python JIT (just in time) 编译器,针对科学用的 Python ,由Cython 和 NumPy 的开发者开发
NumPy:使用 Python 进行科学计算的基础包
Open Babel:一个化学工具箱,用来描述多种化学数据
Open Mining:使用 Python 挖掘商业情报 (BI) (Pandas web 接口)
orange:通过可视化编程或 Python 脚本进行数据挖掘,数据可视化,分析和机器学习
Pandas:提供高性能,易用的数据结构和数据分析工具
PyDy:PyDy 是 Python Dynamics 的缩写,用来为动力学运动建模工作流程提供帮助, 基于 NumPy, SciPy, IPython 和 matplotlib
PyMC:马尔科夫链蒙特卡洛采样工具
RDKit:化学信息学和机器学习软件
SciPy:由一些基于 Python ,用于数学,科学和工程的开源软件构成的生态系统
statsmodels:统计建模和计量经济学
SymPy:一个用于符号数学的 Python 库

数据可视化
matplotlib:一个 Python 2D 绘图库
bokeh:用 Python 进行交互式 web 绘图
ggplot:ggplot2 给 R 提供的 API 的 Python 版本
plotly:协同 Python 和 matplotlib 工作的 web 绘图库
pyecharts:基于百度 Echarts 的数据可视化库
pygal:一个 Python SVG 图表创建工具
pygraphviz:Graphviz 的 Python 接口
PyQtGraph:交互式实时 2D/3D/ 图像绘制及科学/工程学组件
SnakeViz:一个基于浏览器的 Python's cProfile 模块输出结果查看工具
vincent:把 Python 转换为 Vega 语法的转换工具
VisPy:基于 OpenGL 的高性能科学可视化工具

数据API构建及服务
Django
  django-rest-framework:一个强大灵活的工具,用来构建 web API
  django-tastypie:为Django 应用开发API
  django-formapi:为 Django 的表单验证,创建 JSON APIs
Flask
  flask-api:为 flask 开发的,可浏览 Web APIs
  flask-restful:为 flask 快速创建REST APIs
  flask-restless:为 SQLAlchemy 定义的数据库模型创建 RESTful APIs
  flask-api-utils:为 Flask 处理 API 表示和验证
  eve:REST API 框架,由 Flask, MongoDB 等驱动
Pyramid
  cornice:一个Pyramid 的 REST 框架
与框架无关的
  falcon:一个用来建立云 API 和 web app 后端的高性能框架
  sandman:为现存的数据库驱动系统自动创建 REST APIs
  restless:框架无关的 REST 框架 ,基于从 Tastypie 学到的知识
ripozo:快速创建 REST/HATEOAS/Hypermedia APIs

爬虫及网页处理
Scrapy:一个快速高级的屏幕爬取及网页采集框架
cola:一个分布式爬虫框架
Demiurge:基于PyQuery 的爬虫微型框架
feedparser:通用 feed 解析器
Grab:站点爬取框架
MechanicalSoup:用于自动和网络站点交互的 Python 库
portia:Scrapy 可视化爬取
pyspider:一个强大的爬虫系统
RoboBrowser:一个简单的,Python 风格的库,用来浏览网站,而不需要一个独立安装的浏览器
BeautifulSoup:以 Python 风格的方式来对 HTML 或 XML 进行迭代,搜索和修改
bleach:一个基于白名单的 HTML 清理和文本链接库
cssutils:一个 Python 的 CSS 库
html5lib:一个兼容标准的 HTML 文档和片段解析及序列化库
lxml:一个非常快速,简单易用,功能齐全的库,用来处理 HTML 和 XML
MarkupSafe:为Python 实现 XML/HTML/XHTML 标记安全字符串
pyquery:一个解析 HTML 的库,类似 jQuery
untangle:将XML文档转换为Python对象,使其可以方便的访问
xhtml2pdf:HTML/CSS 转 PDF 工具
xmltodict:像处理 JSON 一样处理 XML

算法和设计模式
Python 实现的算法和设计模式。
algorithms:一个 Python 算法模块
python-patterns:Python 设计模式的集合
sortedcontainers:快速,纯 Python 实现的SortedList,SortedDict 和 SortedSet 类型


Reference
https://pydata.org/downloads/
https://pypi.org/project/tushare/
https://tushare.pro
https://www.numpy.org.cn/
http://tushare.org/storing.html
https://docs.sqlalchemy.org/en/latest/dialects/oracle.html

https://pypi.org/project/tushare/

https://github.com/waditu/tushare


关键词:tushare python 

相关文章

wordcloud and jieba
Get financial data by tushare
conda and anaconda
python basic knowledge
Top