五大股指对比图
用jupyter notebook工具编写的笔记文档, 看看能不能很好地变成一篇博客保留下来.
整体看来还不错, 下面是操作步骤.
- 在jupyter里把文档导出为md格式. 步骤为: file/download as / markdown, 结果保存为本地的一个zip文档.
- 解压缩, 得到.md和内嵌的.png文件.
- 用tc打开md文档, copy所有内容
- 回到cnblogs的网页里, 添加新随笔(注意:选用markdown编辑器)
- 填写标题, 写入摘要等内容.
- 粘贴.md的文本内容.
- 浏览内容, 找到内嵌图片的位置, 把.png文件从本地拖拽到blog页面内的位置
- 注意: 如果没有拖拽方式上传图片文件, 则博文内是没有内嵌的图片的, 会很让人失望.
- (关于markdown里的层次列表项的语法: 用tab进行缩进, 后跟*/+/-都行, 表示缩进的内容为次级列表项目)
- 点击保存草稿
- 立即查看或者继续编辑博文
- 点击发布草稿或者保存草稿/立即查看
- ==>最后发布成功.
# %load ../script/my_import.py
# my_import.py
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import tushare as ts
from datetime import datetime,timedelta
import matplotlib.pyplot as plt
%matplotlib inline
# %load方法和%run方法都无法取代import语句.
# 所以深刻理解/使用导入语句是最重要的. ../script/create_dict.py
import sys
sys.path.append('C:/Documents and Settings/Administrator/duanqs/script/')
import dict_indexcode as dic
import dict_stockcode as dsc
# reload(dsc)
# python怎么import指定文件夹下的模块(自定义的模块)?
# 简答: sys.path.append(自定义模块的路径)
# reload()函数将以前导入过的模块再加载一次。
# 重新加载(reload)包括最初导入模块时的分析过程和初始化过程。
# 这样就允许在不退出解释器的情况下重新加载已更改的Python模块。
# 在jupyter notebook里的保险的做法是: kernel/restart and clear output(重启并清除输出, 重启内核的快捷键: 0+0)
# %pwd
# print dic.dict_indexcode.items()
# print dsc.dict_stockcode.items()
# dsc.dict_stockcode.get(u'天山股份')
def get_indexohlc_weekly(indexname,startdate='2010-06-04'):
code= dic.dict_indexcode.get(indexname)
df=ts.get_k_data(code,startdate, ktype='W', index=True)
df2=df.iloc[:,1:7]; df2.index = df.date
ini_open = df2.open['2010-06-04']
# print ini_open
norm_close = df2.close/ini_open *1000.0; norm_close.name='normC'+'.'+indexname
df = pd.concat([df2, norm_close], axis=1)
return df
# 000001 000300 399001 399005 399006
# 历史数据最短, 周线的 起始日期: 2010/6/4
def get_5index_weekly():
df0001=get_indexohlc_weekly(u'上证指数')
df0300=get_indexohlc_weekly(u'沪深300')
df3001=get_indexohlc_weekly(u'深证成指')
df3005=get_indexohlc_weekly(u'中小板指')
df3006=get_indexohlc_weekly(u'创业板指')
df_5index=df0001.iloc[:, 6]
df_5index=pd.concat( [df_5index,
df0300.iloc[:, 6],
df3001.iloc[:, 6],
df3005.iloc[:, 6],
df3006.iloc[:, 6]
],axis=1)
# df_5index.index.name= 'date'
return df_5index
df5=get_5index_weekly()
df5.plot(figsize=(12,4))
# df5['2016'].plot()
print u'df5的行索引的类型为:', type(df5.index)
df5的行索引的类型为: <class 'pandas.indexes.base.Index'>
df5.head(4)
|
normC.上证指数 |
normC.沪深300 |
normC.深证成指 |
normC.中小板指 |
normC.创业板指 |
2010-06-04 |
964.395884 |
967.925119 |
974.354062 |
988.001251 |
1062.082928 |
2010-06-11 |
970.570285 |
973.030338 |
979.340031 |
1015.556369 |
1159.764946 |
2010-06-18 |
949.149278 |
950.916541 |
953.248579 |
957.235085 |
1033.761571 |
2010-06-25 |
964.102818 |
965.066902 |
966.475600 |
969.350218 |
1050.303377 |
df5.tail(5)
|
normC.上证指数 |
normC.沪深300 |
normC.深证成指 |
normC.中小板指 |
normC.创业板指 |
2016-12-02 |
1225.076174 |
1244.632907 |
1043.737459 |
1262.989115 |
2215.202628 |
2016-12-09 |
1220.936995 |
1232.200510 |
1031.972179 |
1258.068591 |
2170.184444 |
2016-12-16 |
1179.431905 |
1180.118462 |
988.467137 |
1204.935403 |
2064.997328 |
2016-12-23 |
1174.586498 |
1166.564504 |
975.564640 |
1196.562042 |
2030.303563 |
2016-12-30 |
1172.127916 |
1167.439180 |
973.391587 |
1191.869865 |
2027.740544 |