最近股市比较火。我们就利用这篇文章简单介绍下用 python 对股票数据做个简单的分析。数据集是从1999年到2016年上海证券交易所的1095只股票。

共1000个文件。

我们的分析思路大致如下:

每年新发股票数

目前市值最大的公司有哪些

股票一段时间的涨跌幅如何

牛市的时候,个股表现如何

首先导入模块import pandas as pd
import numpy as np
import os
import seaborn as sns
import matplotlib.pyplot as plt
# 绘图显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

用 pandas 读文件

 file_list = os.listdir('./data/a-share/')pieces = []
for file_name in file_list:path = './data/a-share/%s' % file_namefile = pd.read_csv(path, encoding ='gb2312')pieces.append(file)shares = pd.concat(pieces)

使用 read_csv 读文件的时候需要指定文件编码 encoding =‘gb2312’ 。将各个文件的 DataFrame 合并后,将索引重置一下,并预览一下数据

 shares.reset_index(inplace=True, drop=True)
shares.head()

这里我们最关注的列是 日期 、 代码 、 简称 、 收盘价 。

按照分析思路,我们首先来看看上市公司的总数

 len(shares['代码'].unique())

对股票代码去重、计数可以看到一共有 1095 家上市公司。那我们再看看每年新增的上市公司有多少家。

 # 计算每只股票的最早交易时间(即:上市时间)
shares_min_date = shares.groupby('简称').agg({'日期':'min'})
shares_min_date['上市年份'] = shares_min_date['日期'].apply(lambda x: str(x)[:4])# 每年上市公司的数量
shares_min_date.groupby('上市年份').count().plot()

可以看到,多的时候每年 60-80 家,而 05年-13年 这段时间上市后的公司特别少,尤其是 13年 只有1家,原因是13年暂停了IPO。

下面我们再来看看数据集中最新的时间点(2016-06-08),市值较大的公司有哪些。

 shares_market_value = shares[shares['日期'] == '2016-06-08'][['简称', '总市值(元)']].sort_values(by='总市值(元)', ascending=False)# 市值最大的公司 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_110609.merge(shares_160609, on='代码')
shares_price


一共有 879 只股票

 # 多少家股票是上涨的
shares_price[shares_price['涨跌幅(%)'] > 0].count()

 # 多少家股票是上涨的
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=False)[:8]
sns.barplot(y=tmp_df['简称'], x=tmp_df['涨跌幅(%)'])


像金证股份 持有5年后可以翻16倍。

同样的方式,我们可以看看股票跌幅分布

因为代码类似,这里就不贴了。从数据上将近 70% 的股票5年后跌幅在 0-40% 的区间。

最后一个有意思的数据,我们看看牛市的时候个股涨跌是怎么样的。我们选择 14.06.30 和 15.06.08 这两天个股的涨跌情况。分析思路跟上面类似,我就直接说数据了。

牛市期间 99.6% 的股票都是涨的,也就是说个股基本都在上涨。来看看涨幅分布。

可以看到, 86% 只股票翻了一番,所以牛市来了,基本上闭着眼选股都能挣钱。也不知道这种大牛市什么时候能再来一次,当然了,牛市来了能不能把握住是个大问题。

我的分析就到这里了,其实分析有意思的数据还有很多,比如结合一些 市盈率等其他维度进行分析,有兴趣的朋友可以自行探索,我觉得还有一个更有挑战性的分析是预测个股的走势,虽然实践上不可行,但从学习角度来看还是挺值得研究的。

Python数据分析实战之股票数据相关推荐

  1. Python数据分析实战——杭州租房数据统计分析

    本案例将租房网站上的杭州地区的租房数据作为参考,运用所学到的数据分析知识来分析真实数据,并以图表的形式得到以下指标: 统计每个区域的房源总数量. 使用条形图分析哪种户型数量最多.更受欢迎. 统计每个区 ...

  2. python电影数据分析报告_【python数据分析实战】电影票房数据分析(二)数据可视化...

    在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来 ...

  3. Python数据分析实战(3)Python实现数据可视化

    文章目录 一.数据可视化介绍 二.matplotlib和pandas画图 1.matplotlib简介和简单使用 2.matplotlib常见作图类型 3.使用pandas画图 4.pandas中绘图 ...

  4. 2020互联网数据分析师教程视频 统计学分析与数据实战 r语言数据分析实战 python数据分析实战 excel自动化报表分析实战 excel数据分析处理实战

    2020互联网数据分析师教程视频 统计学分析与数据实战 r语言数据分析实战 python数据分析实战 excel自动化报表分析实战 excel数据分析处理实战

  5. Python数据分析实战基础 | 初识Pandas

    这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅.已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文. 01  重要的前言 这段时间和一些做数据分析的 ...

  6. python数据分析实战 fabio nelli百度云_Python数据分析实战 内利(Fabio Nelli),杜春晓 9787115432209...

    商品描述: 基本信息 书名:Python数据分析实战 定**价:59.00元 作者: 内利(Fabio Nelli) 著,杜春晓 译 出版社:人民邮电出版社 出版日期:2016-08-01 ISBN: ...

  7. 用Python爬取最新股票数据含完整源代码

    用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...

  8. Python数据分析实战:上海二手房价分析

    1 数据搜集 使用 urllib 库中的request 模块爬取赶集网发布的上海二手房信息,包括包括户型.面积.单价等,再使用BeautifulSoup 库解析爬取的HTML数据,最终将数据保存到CS ...

  9. Python数据分析实战学习与分享(一)

    学习的书籍: Python Data Analytics Python数据分析实战(尚未出版电子书) 1.1数据分析 当今世界对信息技术的依赖程度日渐加深,每天都会产生和存储海量的数据.数据的来源多种 ...

最新文章

  1. Sql Server中两个表之间数据备份和导入
  2. linux的搜索和时间
  3. NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯
  4. 谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具
  5. Java抽象类、接口、类的特殊成员
  6. kafka 多线程消费
  7. Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
  8. python求最小值不能使用min和sotred_Python随手笔记第一篇(2)之初识列表和元组...
  9. Android Studio 将github作为远程maven仓库
  10. centos7的firewall-cmd怎么让指定ip能访问指定端口?
  11. 区块链教程Fabric1.0源代码分析flogging(Fabric日志系统)
  12. 攻防世界——MyDriver2-397
  13. 主板usb接口全部失灵_usb接口没反应,主板usb接口全部失灵
  14. jQuery固定侧边栏插件ss-Menu.js
  15. 分销系统的用户关系数据库设计~
  16. 常用国际贸易术语汇总
  17. 木瓜移动再度荣获2022“Google优秀合作伙伴”
  18. 微课--使用Python查看本机实时网速(GUI版)
  19. Win10系统自带功能,提高办公效率
  20. 一颗芯片是怎样诞生的

热门文章

  1. 微软专家教你,如何搞定树莓派 AI 服务开发
  2. C++字符输入方式详解
  3. mysql查询本周的周一(星期一)和周日(星期日)
  4. Scala核心编程 第一章—Scala语言概述
  5. 弘辽科技跨境电商创业,你了解多少?看老司机怎么说
  6. Thinking in Java(Fourth Edition)2.11
  7. 【LeetCode】第290场单周赛 --- 记录一次AK周赛
  8. vue+vant 实现移动端问卷答题
  9. 能把百度玩出花样的人肯定不简单,分享几个鲜为人知的搜索引擎高级语法
  10. linux 内核 vrf,linux - linux内核支持多少个vrf,哪些系统资源限制了vrf的数量? - 堆栈内存溢出...