python stock数据包tushare例子

TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据来源方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。

其支持获取的股市数据有:交易数据、投资参考数据、股票分类数据、基本面数据、龙虎榜数据、宏观经济数据、新闻事件数据、银行间同业拆放利率等大类,每个大类下面又细分一些小类。

一、安装与升级

同其他python模块的安装使用方法一样,即可以通过pip、easy_install 工具包进行安装,也可以通过源码包进行安装。

方式1:pip install tushare

方式2:访问https://pypi.python.org/pypi/tushare/下载安装

从github上的源码包可以看出,作者非常的勤奋,更新的速度非常快,所以也可以通过如下方法进行升级:

pip install tushare –upgrade
二、数据获取相关

这里以最经常使用的几个交易指标为例,做下汇总。

1、历史数据

import tushare as ts
ts.get_hist_data('600848') #一次性获取全部日k线数据
ts.get_hist_data('600848',start='2015-05-01',end='2015-06-18') #指定时间区间
ts.get_hist_data('600848',ktype='W') #获取周k线数据
ts.get_hist_data('600848',ktype='M') #获取月k线数据
ts.get_hist_data('600848',ktype='5') #获取5分钟k线数据
ts.get_hist_data('600848',ktype='15') #获取15分钟k线数据
ts.get_hist_data('600848',ktype='30') #获取30分钟k线数据
ts.get_hist_data('600848',ktype='60') #获取60分钟k线数据
ts.get_hist_data('sh')#获取上证指数k线数据,其它参数与个股一致,下同
ts.get_hist_data('sz')#获取深圳成指k线数据
ts.get_hist_data('hs300')#获取沪深300指数k线数据
ts.get_hist_data('sz50')#获取上证50指数k线数据
ts.get_hist_data('zxb')#获取中小板指数k线数据
ts.get_hist_data('cyb')#获取创业板指数k线数据
关于复权的概念不了解,这里略过。接下来看实时数据。

2、实时数据

获取当天所有的行情信息,无法指定具体某一支的行情

import tushare as ts
ts.get_today_all()
历史分笔与实时分笔(买卖盘统计):

import tushare as ts
df = ts.get_tick_data('600848',date='2014-01-09')
df.head(10)
df = ts.get_today_ticks('601333')  #当天历史分笔
df.head(10)
import tushare as ts
df = ts.get_realtime_quotes('000581') #Single stock symbol
df[['code','name','price','bid','ask','volume','amount','time']]
#symbols from a list
ts.get_realtime_quotes(['600848','000980','000981'])
#from a Series
ts.get_realtime_quotes(df['code'].tail(10))  #一次获取10个股票的实时分笔数据
3、大盘指数

import tushare as ts
df = ts.get_index()
4、新股数据

获取打新数据:

import tushare as ts
ts.new_stocks()
5、基本面数据

基本面数据里包含选股的很多依据指标,如:市盈率、市净率、每股收益、净利润、季报、应收账款周转率、净利润增长率(%)、流动比率、速动比率、现金流量比率等。

import tushare as ts
ts.get_stock_basics()
#获取2015年第1季度的业绩报表数据
ts.get_report_data(2015,1)
#获取2015年第1季度的盈利能力数据
ts.get_profit_data(2015,1)
#获取2015年第1季度的营运能力数据
ts.get_operation_data(2015,1)
#获取2015年第1季度的成长能力数据
ts.get_growth_data(2015,1)
#获取2015年第1季度的偿债能力数据
ts.get_debtpaying_data(2015,1)
#获取2015年第1季度的现金流量数据
ts.get_cashflow_data(2015,1)
三、数据存储

tushare自身提供了常用的数据保存格式:csv格式、excel格式、HDF5文件格式、JSON格式、mysql关系数据库、nosql数据库。

1、to_csv方法

import tushare as ts
df = ts.get_hist_data('000875')
#直接保存
df.to_csv('c:/day/000875.csv')
#选择保存
df.to_csv('c:/day/000875.csv',columns=['open','high','low','close'])
某些时候,可能需要将一些同类数据保存在一个大文件中,这时候就需要将数据追加在同一个文件里,简单举例如下:

import tushare as ts
import os
filename = 'c:/day/bigfile.csv'
for code in ['000875', '600848', '000981']:
    df = ts.get_hist_data(code)
    if os.path.exists(filename):
        df.to_csv(filename, mode='a', header=None)
    else:
        df.to_csv(filename)
2、to_excel方法

import tushare as ts
df = ts.get_hist_data('000875')
#直接保存
df.to_excel('c:/day/000875.xlsx')
#设定数据位置(从第3行,第6列开始插入数据)
df.to_excel('c:/day/000875.xlsx', startrow=2,startcol=5)
3、to_hdf方法

import tushare as ts
df = ts.get_hist_data('000875')
df.to_hdf('c:/day/hdf.h5','000875')

import tushare as ts
df = ts.get_hist_data('000875')
store = HDFStore('c:/day/store.h5')
store['000875'] = df
store.close()
4、to_json方法

import tushare as ts
df = ts.get_hist_data('000875')
df.to_json('c:/day/000875.json',orient='records')
#或者直接使用
print df.to_json(orient='records')
5、to_sql方法

from sqlalchemy import create_engine
import tushare as ts
df = ts.get_tick_data('600848', date='2014-12-22')
engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8')
#存入数据库
df.to_sql('tick_data',engine)
#追加数据到现有表
#df.to_sql('tick_data',engine,if_exists='append')
如下图:

5、写入mongodb

通过官方的示例来看,并没有直接提供写入mongodb的方法,不过mongodb支持json格式的输入,这里“曲线救国 ” 下:

import pymongo
import json
conn = pymongo.Connection('127.0.0.1', port=27017)
df = ts.get_tick_data('600848',date='2014-12-22')

conn.db.tickdata.insert(json.loads(df.to_json(orient='records')))

四、数据绘图

上面都是拾人牙慧的东西,这里来一点点干货。由 tushare 处理输出的格式已经经过整形,所以可以结合pandas模块可以很好的进行汇图,如下:

import tushare as ts
import pandas as pd
df=ts.get_hist_data('600415',start='2015-04-01',end='2015-06-18')
# 所有的结果汇图
df.plot()
# 只将stock最高值进行汇图
df.high.plot()
# 指定绘图的四个量,并指定线条颜色
with pd.plot_params.use('x_compat', True):
    df.open.plot(color='g')
    df.close.plot(color='y')
    df.high.plot(color='r')
    df.low.plot(color='b')

# 指定绘图的长宽尺度及背景网格

with pd.plot_params.use('x_compat', True):
    df.high.plot(color='r',figsize=(10,4),grid='on')
    df.low.plot(color='b',figsize=(10,4),grid='on')

上面绘制了四个图,这里只选取第四张图具体可以看下效果:

默认上面的方法,只会输出图片,无法保存图片,所以可以通过matplotlib模块的savefig函数保存图片到指定的位置,代码如下:

import matplotlib
import tushare as ts
import pandas as pd
fig = matplotlib.pyplot.gcf()
df=ts.get_hist_data('600415',start='2015-04-01',end='2015-06-18')
with pd.plot_params.use('x_compat', True):
    df.high.plot(color='r',figsize=(10,4),grid='on')
    df.low.plot(color='b',figsize=(10,4),grid='on')
    fig.savefig('F:/graph.png')

时间: 2024-08-02 01:05:51

python stock数据包tushare例子的相关文章

Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子_python

scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. 这里就直接用python的scapy搞. 这里是arp的攻击方式,你可以做成arp攻击. 复制代码 代码如下: #!/usr/bin/python """ ARP attack """ import sys, os from scapy.all import * if os.geteuid() != 0:    

利用Python读取外部数据文件的例子

不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可视化.数据挖掘等.   在本期的Python学习中,我们将针对Python如何获取外部数据做一个详细的介绍,从中我们将会学习以下4个方面的数据获取:   1.读取文本文件的数据,如txt文件和csv文件   2.读取电子表格文件,如Excel文件   3.读取统计软件生成的数据文件,如SAS数据集.

python用socket解析数据包的问题

问题描述 python用socket解析数据包的问题 用python做个抓包工具,下面有写代码不明白,请老师指点一下. while True: packet = s.recvfrom(65565) packet = packet[0] ip_header = packet[0:20] iph = unpack('!BBHHHBBH4s4s' , ip_header) version_ihl = iph[0] version = version_ihl >> 4 ihl = version_ih

在linux下,python怎么才能抓到网卡上的所有TCP数据包?

问题描述 在linux下,python怎么才能抓到网卡上的所有TCP数据包? 网卡已经设置为混杂模式,能够收到mac不是本机mac的数据包,但是程序只能收到和本机ip一样的数据包,不能收到和本机ip不一样的数据包,求助.代码如下: sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) packet_base = sock.recvfrom(1024)[0] print "receive a packet

sock-怎么用python和原始套接字发送一tcp数据包?

问题描述 怎么用python和原始套接字发送一tcp数据包? 这段代码直接把数据packet_base作为ip的载荷了,怎么才能是packet_base作为tcp的载荷呢?谢谢 sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) sock.sendto(packet_base, 0, (IP_PACKET_IN, 12321)) sock.close() 解决方案 把你的代码修改成如下就是TCP啦:

python基础教程之获取本机ip数据包示例_python

这几天用到了raw socket,用python写了些demo程序,这里记录下. 首先我们看一个简单的sniffer程序: 复制代码 代码如下: #! /usr/bin/python# code for linuximport socket#s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.I

Python进行TCP数据包注入(伪造)实例教程

数据包注入是对已经建立的网络连接通过构建任意协议(TCP-UDP-)然后用原始套接字发送的方式进行妨碍的过程,这种方法被广泛使用在网络渗透测试中,比如DDOS,端口扫描等. 一个数据包由IP头部信息.TCP/UDP头部信息和数据构成: <span class="setting">Packet = <span class="value">IP Header + TCP/UDP Header + Data</span></spa

ExtJS 4 数据包的演示例子

在这份演示中(如下图),我们向大家透露了数据包崭新的功能有哪些.假设例子是个简单的博客程序,博客的模型有用户User ,帖子Post 及评论Comment .例子依赖服务器的远程调用须要部署在一个服务器上,静态的文件服务器即可.   进入在线演示:http://playen.ajaxjs.com/playen/ext/DataDemo/index.html 下载:http://playen.ajaxjs.com/playen/ext/DataDemo/DataDemo.zip   1.创建一个模

求高手帮忙啊,服务器端怎么在python中定义和发送tcp数据包,谢谢啊

问题描述 请教高手指点,不甚感激!服务器和手机客户端通信,比如我定义的这个表,要进行socket通信users=Table('users',metadata,Column('user_id',Integer,primary_key=True),Column('nickname',String(40)),Column('sex',String),Column('age',Integer),Column('province',String),Column('city',String),Column(