分析股票⼤数据_Python数据分析:股票数据
最近股市⽐较⽕,我7⽉初上车了,现在已经下了。中间虽然吃了点⾁,但下车的时候都亏进去了,最后连点汤都没喝着。红枸杞
这篇⽂章我们就⽤它python 对股票数据做个简单的分析。数据集是从1999年到2016年上海证券交易所的1095只股票。
共1000个⽂件。
我们的分析思路⼤致如下:
每年新发股票数
⽬前市值最⼤的公司有哪些
许多拼音
股票⼀段时间的涨跌幅如何
⽜市的时候,个股表现如何
⾸先导⼊模块
国耻碑
import pandas as pd import numpy as np import os import aborn as sns import matplotlib.pyplot as plt # 绘图显⽰中⽂Params['font.sans-rif'] = ['SimHei'] Params['axes.unicode_minus'] = Fal
⽤ pandas 读⽂件
file_list = os.listdir('./data/a-share/') pieces = [] for file_name in file_list: path = './data/a-share/%s' % file_name file =
使⽤ read_csv 读⽂件的时候需要指定⽂件编码 encoding ='gb2312' 。将各个⽂件的 DataFrame 合并后,将索引重置⼀下,并预览⼀下数据
<_index(inplace=True, drop=True) shares.head()
这⾥我们最关注的就是 ⽇期 、 代码 、 简称 、 收盘价 。
len(shares['代码'].unique())
你就像那冬天里的一把火按照分析思路,我们⾸先来看看上市公司的总数len
对股票代码去重、计数可以看到⼀共有 1095 家上市公司。那我们再看看每年新增的上市公司有多少家# 计算每只股票的最早交易时间
# 计算每只股票的最早交易时间(即:上市时间) shares_min_date = upby('简称').agg({'⽇期':'min'}) shares_min_date['上市年份'] =
(即:上市时间)
# 每年上市公司的数量 shares_upby('上市年份').count().plot() shares_min_date['⽇期'].apply(lambda x: str(x)[:4]) # 每年上市公司的数量
可以看到,多的时候每年 60-80 家,⽽ 05年-13年 这段时间上市后的公司特别少,尤其是 13年 只有1家,原因是13年暂停了IPO。
下⾯我们再来看看数据集中最新的时间点(2016-06-08),市值较⼤的公司有哪些
shares_market_value = shares[shares['⽇期'] == '2016-06-08'][['简称', '总市值(元)']].sort_values(by='总市值(元)',
ascending=Fal) # 市值最⼤的公司 top10 tmp_df = shares_market_value.head(10) # 画图 sns.barplot(x=tmp_df['总市值(元)'], y=tmp_df['简称'])
截⾄16年6⽉8号,⼯商银⾏(爱存不存)的市值最⾼1.5万亿,不愧是宇宙第⼀⼤⾏。并且能发现市值前⼗的公司⼤部分是银⾏。
下⾯再来看看,从 11.06.09 - 16.06.08 5年时间⾥个股涨跌情况。起点选 11.06.09 的原因是这⼀天包含了900左右只股票,样本较⼤。然后,我们抽取这两天股票的收盘价,计算涨跌幅
shares_110609 = shares[shares['⽇期'] == '2011-06-09'][['代码', '简称', '收盘价(元)']] shares_160609 = shares[shares['⽇期'] == '2016-06-08'][['代码', '收盘价(元)']] # 按照股票代码将2天数据关联 shares_price = (shares_160609, on='代码') shares_price
# 多少家股票是上涨的 shares_price[shares_price['涨跌幅(%)'] > 0].count()
⼀共有 879 只股票# 多少家股票是上涨的
闰年有哪些年
# 多少家股票是上涨的 shares_price[shares_price['涨跌幅(%)'] < 0].count()
# 多少家股票是上涨的
可以看到,上涨的股票 627 只,占⽐ 71% 。那我们再来看看,上涨的股票,涨幅分布情况
bins = np.array([0, 40, 70, 100, 1700]) # 股价上涨的公司 shares_up = shares_price[shares_price['涨跌幅(%)'] > 0] # 按涨幅进⾏分组 shares_up['label'] = pd.cut(shares_up['涨跌幅(%)'], bins) # 分组统计 up_label_count = shares_up[['label', '代
码']].groupby('label').count() up_label_count['占⽐'] = up_label_count['代码'] / up_label_count.sum().values
sns.barplot(x=up_label_count['占⽐'], y=up_label_count.index)
涨幅分布还是⽐较极端的,虽然上涨的股票总体⽐较⾼,但上涨的股票中有30%只股票涨幅不⾜ 40% ,也就是平均⼀年涨 8% ,如果理财年收益 10% 算及格的话, 8% 明显偏低了。再加上跌的股票,收益率低于 10% 的股票⼤于 50% ,所以股市的钱也不是那么好挣的。
# 涨幅最⼤的公司 tmp_df = shares_up.sort_values(by='涨跌幅(%)',当然也有踩狗屎运的时候,⽐如买到了下⾯这些股票并且长期持有# 涨幅最⼤的公司
ascending=Fal)[:8] sns.barplot(y=tmp_df['简称'], x=tmp_df['涨跌幅(%)'])
像 ⾦证股份 持有5年后可以翻16倍。
同样的⽅式,我们可以看看股票跌幅分布
因为代码类似,这⾥就不贴了。从数据上将近 70% 的股票5年后跌幅在 0-40% 的区间。
最后⼀个有意思的数据,我们看看⽜市的时候个股涨跌是怎么样的。我们选择 14.06.30 和 15.06.08 这两天个股的涨跌情况。分析思路跟上⾯类似,我就直接说数据了。徐可馨
⽜市期间 99.6% 的股票都是涨的,也就是说个股基本都在上涨。来看看涨幅分布
可以看到, 86% 只股票翻了⼀番,所以⽜市来了,基本上闭着眼选股都能挣钱。也不知道这种⼤⽜市什么时候能再来⼀次,当然了,⽜市来了能不能把握住是个⼤问题。
失业保险查询
变更证明我的分析就到这⾥了,其实分析有意思的数据还有很多,⽐如结合⼀些 市盈率 等其他维度进⾏分析,有兴趣的朋友可以⾃⾏探索,我觉得还有⼀个更有挑战性的分析是预测个股的⾛势,虽然实践上不可⾏,但从学习⾓度来看还是挺值得研究的,如果⼤家点赞较多,我下周考虑
写⼀下。