数据研究
import pandas as pd
df=pd.read_csv('passwd.txt',dtype={'port':int},sep='|')
(host,port,user,passwd)=df.iloc[0]
import sqlalchemy as sa
import os
import pandas as pd
import MySQLdb
conn=MySQLdb.connect(host=host,user=user,passwd=passwd,db='test',port=port,charset="utf8")
2015年股灾期间,北上资金持续抄底,在指数上涨后有一波减持。2016年之后北上资金开始持续净流入
hsgt_stat_cumsum_df = pd.read_sql('select * from hsgt_stat_cumsum_df;', con=conn)
#hsgt_stat_cumsum_df.tail(4)
import matplotlib
from pylab import mpl
matplotlib.rcParams['axes.unicode_minus']=False
myfont = matplotlib.font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttf')
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.sans-serif'] = ['SimHei']
import matplotlib.pyplot as plt
fig = plt.figure(figsize =(12,6))
ax1 = fig.add_subplot(111)
plt.xticks(rotation=25)
ax1.plot( pd.to_datetime(hsgt_stat_cumsum_df['date'].tolist()), hsgt_stat_cumsum_df['close'].tolist(),color="red",label=u'sz' ) #linestyle="--",
ax1.set_title( u"HS300&北上净资金" ,fontsize =12)
ax2 = ax1.twinx()
ax2.plot( pd.to_datetime( hsgt_stat_cumsum_df['date'].tolist()),hsgt_stat_cumsum_df['north_cumsum'].tolist(),color="blue",label=u'北上资金累计资金')# color='red' , label=u'质押数量'
ax1.set_ylabel(u'HS300指数',fontsize =12)
ax2.set_ylabel(u'北上累积资金')
ax1.legend( loc="upper left",fontsize =12)
ax2.legend( loc="upper center",fontsize =12)
<matplotlib.legend.Legend at 0x7f2711986890>
close 为hs300 指数走势,meanPrice为北上资金对应的HS300指数的持仓成本 持仓成本计算为 累积投入资金/当前持有的股数 ; 每日股数变动为= 当日北上净流入流出值/当日指数 ; 当前持股=累加历史上每天的股票变动
import copy
tmp_df=copy.deepcopy( hsgt_stat_cumsum_df )
tmp_df.index=tmp_df['date'] #data[['indexPrice','meanPrice']].plot(figsize=(14,5),linewidth=2)
tmp_df[['close','meanPrice']].plot(figsize=(14,8),linewidth=2,legend=True,title=u'hs300股价 & 北上资金持仓成本') #[tmp_df['date']>'2015-01-01']
plt.figure(2)
tmp_df['accumShare'].plot(figsize=(14,3),color='red',title=u'累计份额(参考 百万)',linewidth=2,legend=True)
<matplotlib.axes._subplots.AxesSubplot at 0x7f270e5aa290>
inustry_in_df = pd.read_sql('select * from inustry_in_df;', con=conn)
inustry_in_df
2018-08-07 | 2018-08-08 | 2018-08-09 | 2018-08-10 | 2018-08-13 | |
---|---|---|---|---|---|
0 | 酿酒行业 | 家电行业 | 食品行业 | 房地产 | 酒店旅游 |
1 | 食品行业 | 食品行业 | 仪器仪表 | 家电行业 | 房地产 |
2 | 金融行业 | 酿酒行业 | 房地产 | 酒店旅游 | 钢铁行业 |
3 | 生物制药 | 仪器仪表 | 金融行业 | None | 食品行业 |
4 | 家电行业 | 建筑建材 | 酿酒行业 | None | 电子器件 |
inustry_out_df = pd.read_sql('select * from inustry_out_df;', con=conn)
inustry_out_df
2018-08-07 | 2018-08-08 | 2018-08-09 | 2018-08-10 | 2018-08-13 | |
---|---|---|---|---|---|
0 | 仪器仪表 | 酒店旅游 | 水泥行业 | 金融行业 | 酿酒行业 |
1 | 交通运输 | 房地产 | None | 酿酒行业 | 仪器仪表 |
2 | None | None | None | 仪器仪表 | 家电行业 |
3 | None | None | None | 水泥行业 | 金融行业 |
4 | None | None | None | 食品行业 | 汽车制造 |
单位: 亿
recent_stks_trad_top_df = pd.read_sql('select * from recent_stks_trad_top_df;', con=conn)
recent_stks_trad_top_df['JME']=recent_stks_trad_top_df['JME']/100000000
recent_stks_trad_top_df['MRJE']=recent_stks_trad_top_df['MRJE']/100000000
recent_stks_trad_top_df['MCJE']=recent_stks_trad_top_df['MCJE']/100000000
recent_stks_trad_top_df['CJJE']=recent_stks_trad_top_df['CJJE']/100000000
recent_stks_trad_top_df[['date','stk','stkname','JME','MRJE','MCJE','CJJE']].sort(['date','JME'],ascending=False).rename(columns={'JME':u'净买入额','MRJE':u'买入金额','MCJE':u'卖出金额','CJJE':u'成交金额'}).head(20)
date | stk | stkname | 净买入额 | 买入金额 | 卖出金额 | 成交金额 | |
---|---|---|---|---|---|---|---|
17 | 2018-08-13 | 601888 | 中国国旅 | 1.000758 | 1.948329 | 0.947571 | 2.895900 |
7 | 2018-08-13 | 000002 | 万科A | 0.570925 | 1.283860 | 0.712934 | 1.996794 |
19 | 2018-08-13 | 600887 | 伊利股份 | 0.549909 | 1.977175 | 1.427267 | 3.404442 |
16 | 2018-08-13 | 601398 | 工商银行 | 0.543246 | 1.467629 | 0.924383 | 2.392012 |
3 | 2018-08-13 | 000932 | 华菱钢铁 | 0.503754 | 0.805674 | 0.301920 | 1.107594 |
14 | 2018-08-13 | 600048 | 保利地产 | 0.321055 | 0.922119 | 0.601065 | 1.523184 |
4 | 2018-08-13 | 000725 | 京东方A | 0.227346 | 0.774127 | 0.546781 | 1.320908 |
13 | 2018-08-13 | 600019 | 宝钢股份 | 0.109637 | 0.730448 | 0.620811 | 1.351259 |
6 | 2018-08-13 | 002304 | 洋河股份 | 0.001044 | 0.764242 | 0.763199 | 1.527441 |
12 | 2018-08-13 | 600585 | 海螺水泥 | -0.176333 | 1.242424 | 1.418757 | 2.661181 |
18 | 2018-08-13 | 600276 | 恒瑞医药 | -0.197584 | 1.471780 | 1.669364 | 3.141145 |
2 | 2018-08-13 | 002594 | 比亚迪 | -0.249633 | 0.417813 | 0.667446 | 1.085260 |
15 | 2018-08-13 | 600036 | 招商银行 | -0.403353 | 0.824685 | 1.228038 | 2.052722 |
8 | 2018-08-13 | 000651 | 格力电器 | -0.470126 | 1.171808 | 1.641935 | 2.813743 |
5 | 2018-08-13 | 002008 | 大族激光 | -0.535493 | 0.433025 | 0.968519 | 1.401544 |
9 | 2018-08-13 | 000333 | 美的集团 | -0.623296 | 1.548400 | 2.171696 | 3.720096 |
1 | 2018-08-13 | 601318 | 中国平安 | -0.776460 | 1.758923 | 2.535382 | 4.294305 |
0 | 2018-08-13 | 600519 | 贵州茅台 | -0.872083 | 2.660381 | 3.532465 | 6.192846 |
10 | 2018-08-13 | 002415 | 海康威视 | -0.947462 | 1.442604 | 2.390066 | 3.832670 |
11 | 2018-08-13 | 000858 | 五粮液 | -2.086701 | 2.811742 | 4.898443 | 7.710184 |
conn.close()
from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di
# This line will hide code by default when the notebook is exported as HTML
di.display_html('''<script>
$(function() {
String.prototype.startWith=function(str){
var reg=new RegExp("^"+str);
return reg.test(this);
}
String.prototype.endWith=function(str){
var reg=new RegExp(str+"$");
return reg.test(this);
}
if ($("body.notebook_app").length == 0) {
$(".input_area").empty().toggle();
$(".prompt").empty().toggle();
$(".output_stderr").empty().toggle();
$("pre").each(function(idx, val){
if(this.innerHTML.startWith('&')){
$(this).empty().toggle();
}
})
$(".code_cell").css("padding", '0px');
$(".code_cell").css("border", '0px');
$("#notebook-container").css("padding", '0px');
$("div.output_subarea").css("min-width", '100%');
}
});
</script>''', raw=True)
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
移动端课程