一、利用tushare获取股票数据
上次利用tushare的API获取了一部分的数据,感觉不够齐全,所以现在更新程序import tushare as ts
import pandas as pdpro = ts.pro_api()
data = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code')
#实例化一个对象,获取所有的股票代码
ls=list(data['ts_code'])
#列表化所有的股票代码
data=0
for i in range(len(ls)):try:df = pro.query('daily', ts_code=ls[i])print(i)if i==0:com_df=pd.DataFrame(df)else:com_df=pd.concat([com_df,df])except:pass#获取股票的所有历史数据
com_df.reset_index(inplace=True)
com_df.to_csv(r"newstock7-31.csv",index=False)
#将数据导出csv,csv大小大约300MB,整个程序耗时2到3个小时
二 、股票数据分析
(1) 处理股票数据
这次主要想分析股票的涨跌与星期一,二有没有什么关系import pandas as pd
import numpy as np
import datetime
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', 100)
pd.set_option('max_colwidth',100)pd.set_option("display.unicode.east_asian_width",True)
#打印的行数,列数,列与列之间的宽度
test=datetime.datetime.now()
a=pd.read_csv(r'newstock7-31.csv')
del a['index']
a['date']=pd.to_datetime(a['trade_date'],format="%Y%m%d")
#将八位数的日期转化为时间格式
a['weekday']=np.asarray(list(map(pd.Timestamp.isoweekday,a['date'])))
#增加一列,为星期数(星期一,星期二之类)
a['year']=pd.DataFrame(list(map(pd.Timestamp.isocalendar,a['date'])))[0]
#增加一列,为年份b=a.pivot_table(index["year","weekday"],values="pct_chg",aggfunc=np.mean,margins=True)
#groupby年份,星期数,value为平均涨跌c=a.query("pct_chg>=0").pivot_table(index=["year","weekday"],values="pct_chg",aggfunc='count',margins=True)
#groupby年份,星期数,value为涨的个数d=a.query("pct_chg<0").pivot_table(index["year","weekday"],values="pct_chg",aggfunc='count',margins=True)
#groupby年份,星期数,value为涨的个数e=a.pivot_table(index=["year","weekday"],values="pct_chg",aggfunc='count',margins=True)
#groupby年份,星期数,value为所有的股票数zong=pd.DataFrame({"平均涨跌幅度":b[b.columns[0]],
"涨数":c[c.columns[0]]/e[e.columns[0]],
"跌数":d[c.columns[0]]/e[e.columns[0]]})
print(zong)
#汇总几个表,处理数据print(datetime.datetime.now()-test)
#测试时间,整个程序大约1分钟左右吧
zong=zong.reset_index()
zong.to_excel("zong.xlsx",index=False,merge_cells=False)
(2) 股票分析
图一、从2015年以来,星期数涨跌情况图
从图一看,跌的最惨的是星期四,而星期四涨的的概率为47.9%,平均跌幅为0.18%;涨的最好的是周二,其次是周一,涨的概率为54.9%,57.7%。
我猜想周四普遍下跌主要原因是市场的避险情绪,和个人投资者的取款消费。
投资机构,普遍都不太愿意持股过周末,因为周末容易出一些黑天鹅,投资环境的改变之类的事。
个人投资者也容易在周四这个时间节点取款消费。其实也很容易想,周末嘛,大家都有周末出去玩的习惯,而我国是T+1的取款,如果要周六消费,那么周四就要证转银取款。所以市场卖出意愿隐性的增大,买的意愿在减小。那么自然下跌大概率增大。
那么,我们可以利用这种现象来指导我们的投资吗。我想是可以的,周四和周五反而是购买股票的一个很好的时机,因为受到一些环境因素的影响,股票的价值被过分的低估。周一,周二反而是卖出股票的好时机,因为周四,周五卖出的资金多了,市场的闲余资金增多,市场的购买股票意愿隐性增加,从而过分高估股票的价值。这一起一伏之间便是投机者的利润。