代码讲解
1. 保存并输出徐工机械[000425]股票2012年初到2017年末的后复权成交价数据,存为csv文件,再绘制折线图
2. 绘制最近一年的数据乐视网[300104]股票每日涨跌幅核密度估计图
#观测当前的股价
import tushare as ts
STOCK = ['600219', '000002', '000623', '000725', '600036', '601166', '600298', '600881', '002582', '600750',
'601088',
'000338',
'000895',
'000792']
quotes= ts.get_realtime_quotes(STOCK)
获取实时分笔数据
print(quotes)
quotes.to_csv('d:/bigdata/realtime_quotes.csv',encoding="utf_8_sig")
#保存并输出徐工机械[000425]股票2012年初到2017年末的后复权成交价数据,存为csv文件,再绘制折线图
import matplotlib.pyplot as plt #绘图
import seaborn as sns #基于matplotlib的数据可视化库
import tushare as ts #财经数据接口
from datetime import datetime #从datetime模块导入datetime函数
#首先用tushare获取成交价数据,复权类别是后复权,开始时间2012年1月1日,截止时间2017年12月31日
#get_k_data获取分时k线数据,保存为dataframe数据类型
stock = ts.get_k_data('000425', autype='hfq', ktype='M', start='2012-1-1', end='2017-12-31')
#存为csv文件:逗号分隔值(Comma-Separated Values,CSV,也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
stock.to_csv('d:/23.csv')
#用seaborn绘制画板,加上白色网格
sns.set_style("whitegrid")
#在画板上加上线条和图例说明,图片比例为15:9
stock['open'].plot(legend=True, figsize=(15, 9))
stock['close'].plot(legend=True, figsize=(15, 9))
stock['high'].plot(legend=True, figsize=(15, 9))
stock['low'].plot(legend=True, figsize=(15, 9))
#输出K线数据
print(stock)
#展示画板
plt.show()
#绘制最近一年的数据乐视网[300104]股票每日涨跌幅核密度估计图
import matplotlib.pyplot as plt #绘图
import seaborn as sns #基于matplotlib的数据可视化库
import tushare as ts #财经数据接口
from datetime import datetime
end = datetime.today() #结束时间
start = datetime(end.year-1,end.month,end.day) #开始时间,选取最近一年的数据
#字符串化,datetime抓取时间是精确到秒,只保留年、月、日,YYYY-MM-DD,因此保留长度为10位
end = str(end)[0:10]
start = str(start)[0:10]
# get_hist_data函数,获取某只股票的历史交易数据,参数与get_k_data相同
stock = ts.get_hist_data('300104',start,end)
#计算每日涨跌幅度,pct_change()函数用来计算两个相邻数字之间的变化率
stock['Daily Return'] = stock['close'].pct_change()
# kdeplot函数绘制核密度估计图,dropna()方法删除缺失数据
sns.kdeplot(stock['Daily Return'].dropna())
#展示画板
plt.show()
get_hist_data()
获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
参数说明:
code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
start:开始日期,格式YYYY-MM-DD
end:结束日期,格式YYYY-MM-DD
ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
retry_count:当网络异常后重试次数,默认为3
pause:重试时停顿秒数,默认为0
返回值说明:
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:换手率[注:指数无此项]
推荐学习资料
tushare:
http://www.361way.com/python-stock-tushare/4579.html
matplotlib:
https://www.cnblogs.com/duye/p/8862666.html
https://blog.csdn.net/ScarlettYellow/article/details/80458797
seaborn:
https://blog.csdn.net/qq_33120943/article/details/76569756
https://www.cnblogs.com/gczr/p/6767175.html
总题干
烽火通信(股票代码600498)经营光纤通信和相关通信技术、信息技术领域科技开发;相关高新技术产品设计、制造和销售,含光纤预制棒、光纤复合架空地线(OPGW)、光纤复合相线(OPPC)及金具和附件、电力导线、电线 、电缆及相关材料和附件、通讯线缆及附件、 海底光缆、海底电缆及海底通信设备的设计、制造与销售;数据中心机房基础设施及配套产品(含供配电、空调制冷设备、智能管理监控等)的规划设计、开发、生产、销售、技术服务、工程安装、维修和咨询;通用服务器、存储产品、云计算、大数据、虚拟化软件、应用软件、交换机、工作站软硬件产品的技术开发和产品生产、销售和售后服务;系统集成、代理销售;增值电信业务中的互联网接入服务业务及增值电信业务中的互联网接入数据中心业务。
相关资料如下:
1、在计算公司股票和上证指数收益率指标时,用一元线性回归直线分析法计算公司股票的β系数,所有市场组合收益率为上证指数2017年1-12月的指数涨跌幅度之和。在计算公司股票和上证指数收益率指标时,直接以k线图中的月线涨跌幅度为依据。回归分析时,以公司股价涨跌幅度作为因变量,以上证指数涨跌幅度作为自变量。
2、烽火通信公司的净利润和股利增长率为1.67%。以2017年度12月31日总股本1113938974股为基数,每10股派发现金红利3.4元(含税);不进行资本公积金转增股本。
此外,梅泰诺(300038) 与烽火通信是类似企业,梅泰诺预期明年每股净利和股利增长2%。
假设2017年梅泰诺公司、烽火通信的净利润取自合并报表中的净利润
3、假定公司资产负债率为40%,为公司最佳目标资本结构,则公司下年度有一个投资计划需要资金7亿元。
注:计算结果如有小数,除有特殊说明外,均四舍五入保留两位小数,最终结果中的比率指标四舍五入计算到0.01%,财务报表取数采用合并报表口径,回归线性方程y=a+bx。
样题1——抓取数据,读写csv,折线图
(案例题 v4)【17 分】、
大数据分析师编写python程序,利用tushare包抓取烽火通信与上证指数2017年1-12月的指数涨跌幅度数据。(升序排序)
分别存储为csv文件,文件分别为:
烽火通信2017年1-12月的指数涨跌幅度数据.csv
上证指数2017年1-12月的指数涨跌幅度数据.csv
对存储后的两个文件分别进行清洗,工具不限,只保留指数涨跌幅度数据后存储为csv文件,文件名分别为:
烽火通信2017年1-12月的指数涨跌幅度数据(已清洗).csv
上证指数2017年1-12月的指数涨跌幅度数据(已清洗).csv
编写python程序,根据文件在一张图片上生成开盘价、收盘价和最高价的折线图。大小为(10,7),存储为png格式。
文件名为:开盘价收盘价最高价折线图.png
编写python程序,根据文件在一张图片上生成5日均价、10日均价和20日均价的折线图。大小为(10,7),存储为png格式。
文件名为:5日均价10日均价20日均价折线图.png
所有文件的存储路径为"D:\BigData\"
请将代码全部复制粘贴到下框
答案解析:
import matplotlib.pyplot as plt #绘图
import seaborn as sns #基于matplotlib的数据可视化库
import tushare as ts #财经数据接口
import pandas as pd
from datetime import datetime
# get_hist_data函数,获取某只股票的历史交易数据,参数与get_k_data相同
stock1 = ts.get_hist_data('600498','2017-01-01','2017-12-31')
stock2 = ts.get_hist_data('sh','2017-01-01','2017-12-31')
stock1.to_csv('d:/bigdata/烽火通信.csv')
stock2.to_csv('d:/bigdata/上证指数.csv')
filename=open('d:/bigdata/烽火通信.csv')
stock3=pd.read_csv(filename)
#stock4=pd.read_csv('d:/bigdata/上证指数.csv')
print(stock3)
sns.set_style("whitegrid")
stock3['open'].plot(legend=True, figsize=(10, 7))
stock3['close'].plot(legend=True, figsize=(10, 7))
stock3['high'].plot(legend=True, figsize=(10, 7))
#plt.show()
plt.savefig('d:/bigdata/折线图1.png')
样题3——抓取月度不复权收盘股价,排序
案例题 v4)【2 分】、
请运用tushare工具,搜集2016-2017年烽火通信(股票代码600498)月度不复权收盘股价,并请在大数据中心搜集2016-2017年月度上证综合收盘指数。
答案:
import matplotlib.pyplot as plt #绘图
import seaborn as sns #基于matplotlib的数据可视化库
import tushare as ts #财经数据接口
import pandas as pd
from datetime import datetime
# get_hist_data函数,获取某只股票的历史交易数据,参数与get_k_data相同
stock1 = ts.get_hist_data('600498','2016-01-01','2017-12-31',ktype='M')
print(stock1.sort_values(axis = 0,ascending = True,by=['date'])) #axis=0表示按列排序,为1表示按列
样题6——抓取年末利润表,读写csv,遍历,筛选单元格,柱状图,UTF8编码
(案例题 v4)【5 分】、
大数据分析师编写python程序,利用tushare包抓取烽火通信公司2017年度末利润表(数据来源:上交所/披露/上市公司信息)。
提示:利用tushare包抓取烽火通信公司2017年度末利润表的接口为:ts.get_profit_statement('600498')。 将利润表存储为csv文件
文件名为:烽火通信2017年末利润表.csv
编写python程序,根据文件在一张图片上按季度生成每季度的所得税的柱状图。大小为(10,7),存储为png格式。
文件名为:季度所得税柱状图.png
大数据分析师将1个csv文件,1个png文件。
所有文件的存储路径为"D:\BigData\"
请将代码全部复制粘贴到下框
答案解析:
import matplotlib.pyplot as plt #绘图
import seaborn as sns #基于matplotlib的数据可视化库
import tushare as ts #财经数据接口
import pandas as pd
import csv
from datetime import datetime
stock1 = ts.get_profit_statement('600498')
stock1.to_csv('d:/bigdata/利润表.csv',encoding='utf_8_sig')
filename='d:/bigdata/利润表.csv'
with open(filename,encoding='utf_8_sig') as f:
r=csv.DictReader(f)
d={} #空字典,用来保存各季度所得税
for row in r:
if row['报表日期'] == '减:所得税费用':
d['第一季度'] = float(row['20170331'])
d['第二季度'] = float(row['20170630'])
d['第三季度'] = float(row['20170930'])
d['第四季度'] = float(row['20171231'])
#print(d)
sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei') # 解决Seaborn中文显示问题
sns.barplot(x=list(d.keys()),y=list(d.values()))
plt.title('各季度所得税')
plt.xlabel('季度')
plt.ylabel('所得税')
plt.savefig('d:/bigdata/所得税柱状图.png')
break
代码讲解
import matplotlib.pyplot as plt
import seaborn as sns #Seaborn是基于matplotlib的python数据可视化库
import tushare as ts
from datetime import datetime
#保存并输出徐工机械[000425]股票2012年初到2017年末的后复权成交价数据,存为csv文件,再绘制折线图
#首先用tushare获取成交价数据,复权类别是后复权,开始时间2012年1月1日,截止时间2017年12月31日
stock = ts.get_k_data('000425', autype='hfq', ktype='M', start='2012-1-1', end='2017-12-31')
#存为csv文件
stock.to_csv('e:/23.csv')
#用seaborn绘制画板,加上白色网格
sns.set_style("whitegrid")
#在画板上加上线条说明
stock['open'].plot(legend=True, figsize=(15, 9))
stock['close'].plot(legend=True, figsize=(15, 9))
stock['high'].plot(legend=True, figsize=(15, 9))
stock['low'].plot(legend=True, figsize=(15, 9))
#输出K线数据
print(stock)
#展示画板
plt.show()
#绘制最近一年的数据乐视网[300104]股票每日涨跌幅核密度估计图
end = datetime.today() #开始时间结束时间,选取最近一年的数据
start = datetime(end.year-1,end.month,end.day)
#datetime抓取时间是精确到秒的所以只保留年月日
end = str(end)[0:10]
start = str(start)[0:10]
#选取股票获取日K线数据
stock = ts.get_hist_data('300104',start,end)
stock['Daily Return'] = stock['close'].pct_change()
sns.kdeplot(stock['Daily Return'].dropna())
plt.show()