保存tushare所有股票数据,并对涨停进行分析


import tushare as ts
import pandas as pd
import time
import os
import datetime
# 指定自己要存放文件的绝对路径
os.chdir('E:/')
pd.set_option('expand_frame_repr', False)
now_time = datetime.date.today()
# 从tushare获取指定日期
def get_today_all_ts(date):date_now = date# 先获得所有股票的收盘数据df_close = ts.get_today_all()# 获得所有股票的基本信息df_basics = ts.get_stock_basics()df_all = pd.merge(left=df_close, right=df_basics, on='name', how='outer')df_all['code'] = df_all['code'].astype(str) + ' '# 保存数据df_all.to_csv(str(date_now) + '_ts.csv', index=False, encoding='gbk')print('%s is downloaded.' % (str(date_now)))print(df_all)return df_allif __name__ == '__main__':get_today_all_ts(date=now_time)

import pandas as pd
import requests
import tushare as ts
import os
import time
import warnings
warnings.filterwarnings('ignore')
pd.set_option('expand_frame_repr', False)
os.chdir('E:/')
date_now = datetime.date.today()
print(str(date_now))
# ====龙虎榜数据# 读取TDX的每日股票数据
df = pd.read_csv('{}_ts.csv'.format(str(date_now)), encoding='gbk')
df.fillna(0, inplace=True)
df.replace('nan ', 0, inplace=True)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])df[['changepercent', 'pe', 'mktcap', 'nmc']] = df[['changepercent', 'pe', 'mktcap', 'nmc']].astype(float)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])df['code'] = df['code'].astype(str)  # 转化成str后,NAN也变成nan str格式
# 添加 交易所 列
df.loc[df['code'].str.startswith('3'), 'exchange'] = 'CY'
df.loc[df['code'].str.startswith('6'), 'exchange'] = 'SH'
df.loc[df['code'].str.startswith('0'), 'exchange'] = 'SZ'# 找出上涨的股票
df_up = df[df['changepercent'] > 0.00]
# 走平股数
df_even = df[df['changepercent'] == 0.00]
# 找出下跌的股票
df_down = df[df['changepercent'] < 0.00]# 找出涨停的股票
limit_up = df[df['changepercent'] >= 9.70]
limit_down = df[df['changepercent'] <= -9.70]# 涨停股数中的未封板股,上市日期小于15天
limit_up_new = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(15)]
# 涨停股数中次新股,上市日期小于1年
limit_up_fresh = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(365)]# 涨停股数中的未封板股,上市日期小于15天
limit_down_new = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(15)]
# 涨停股数中次新股,上市日期小于1年
limit_down_fresh = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(365)]print('A股上涨个数: %d, A股下跌个数: %d, A股走平个数: %d。' % (df_up.shape[0], df_down.shape[0], df_even.shape[0]))
print('A股总成交额:%d, 总成交量:%d' % (df['amount'].sum(), df['volume'].sum()))
print('A股平均市盈率:%.2f, 平均流通市值 %.2f 亿, 平均总市值 %.2f 亿' % (df['pe'].mean(), df['nmc'].mean(), df['mktcap'].mean()))
print('涨停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_up.shape[0], limit_up_new.shape[0], limit_up_fresh.shape[0]))
print('跌停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_down.shape[0], limit_down_new.shape[0], limit_down_fresh.shape[0]))# 获取指定列的分析统计结果
def get_output(df, columns='industry', name='_limit_up'):df = df.copy()output = pd.DataFrame()output = pd.DataFrame(df.groupby(columns)['code'].count())output['pe_mean'] = df.groupby(columns)['pe'].mean()output['pe_median'] = df.groupby(columns)['pe'].median()output['nmc_mean'] = df.groupby(columns)['nmc'].mean()output['nmc_median'] = df.groupby(columns)['nmc'].median()output['mktcap_mean'] = df.groupby(columns)['mktcap'].mean()output['mktcap_median'] = df.groupby(columns)['mktcap'].median()output['volume_mean'] = df.groupby(columns)['volume'].mean()output['volume_median'] = df.groupby(columns)['volume'].median()output['amount_mean'] = df.groupby(columns)['amount'].mean()output['amount_median'] = df.groupby(columns)['amount'].median()output.sort_values('code', ascending=False, inplace=True)output.rename(columns={'code': name + '_count'}, inplace=True)return outputfor i in ['industry', 'exchange', 'area']:
# 对涨停的股票分析output_limit_up = get_output(limit_up, columns=i, name='limit_up')print(output_limit_up)
# 对跌停的股票分析output_limit_down = get_output(limit_down, columns=i, name='limit_down')print(output_limit_down)
# 对全量的股票分析output_total = get_output(df, columns=i, name='total')print(output_total)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重命名 docker 容器名

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 docker 容器&#xff08;服务&#xff09;重命名只要一个命令就可以&#xff1a;docker rename 原容器名 新容器名 如&#xff1a;

vim编辑器常用命令总结

在命令状态下对当前行用 &#xff08;连按两次&#xff09;, 或对多行用n&#xff08;n是自然数&#xff09;表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版&#xff0c;相当于一般IDE里的code format。使用ggG可对整篇代码进行排版。 vim 选择文本&…

java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

1、前缀查询&#xff08;prefix&#xff09; //prefix前缀查询Testpublic void test15() throws UnknownHostException {//1、指定es集群 cluster.name 是固定的key值&#xff0c;my-application是ES集群的名称Settings settings Settings.builder().put("cluster.name&…

tushare查看a股是否跌到位

#%%#获取上证指数历史行情数据#获取上证指数历史行情数据 import tushare as ts import pandas as pd # 设置token&#xff0c;只需要在第一次调用或者token失效时设置 # 设置完成后&#xff0c;之后就不再需要这一个命令了 ts.set_token() pro ts.pro_api() df_daily pro.in…

为什么我要转载文章?

在csdn上很多年&#xff0c;学习了许多&#xff0c;也教了人许多&#xff0c;但最近&#xff0c;大家发现&#xff0c;我转载了大量文章&#xff0c;而很少原创文章&#xff0c;真正的有水平且自己一个字一个字敲键盘出来的&#xff0c;1000字要三四个小时&#xff0c;如果包含…

Docker 从Dockerfile 构建镜像 :build 命令的用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Dockerfile 创建完成后&#xff0c;可以使用 docker build 命令根据 Dockerfile 构建一个镜像。 1. 首先准备好 Dockerfile : 2. 执行构…

(翻译).NET应用架构

.NET应用架构 Kalyan Bandarupalli著&#xff0c;hystar翻译 这个系列文章将帮助.NET开发人员与架构师使用最新的.NET技术设计高效的.NET应用。关于应用架构这方面虽然已有很多文章与书籍&#xff0c;但是对于设计人员理解应用设计的最佳的原则与实践仍然是具有挑战性的。这篇…

activity idea编写bpmn流程文件

idea 的bpmn插件支持不好&#xff0c;1、画流程图&#xff0c;注意排他网关流程的条件&#xff0c;2、复制一份xml文件出来&#xff0c;头部替换&#xff1a;<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org…

tushare写三因子模型

CAPM模型经历了大量的实证和应用之后&#xff0c;有证据表明&#xff0c;市场风险溢酬并不能充分解释个别风险资产的收益率。于是很多研究者开始探索其他的因素&#xff0c;比如公司市值、PE、杠杆比例、账面市值比等。Fama和French两个人对于各种因素进行了全面的组合分析&…

Duplicate entry ‘XXX‘ for key

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a;Duplicate entry XXX for key 意思是说有唯一约束&#xff0c;所以不能重复。 而我的情况是&#xff0c;有两个表…

list c++template

以一个现成的模板实现了线性表的顺序结构实现&#xff0c;VC6.0调试OK 请大家以开源的方式来完善这个算法 &#xff0c;以跟贴方式来添加代码 请大家往这个下面继续添加完整的可以运行的线性表的顺序结构实现代码 /* 线性表的顺序结构实现&#xff0c;数组C实现法&#xff0c;V…

聊聊composer.lock

composer.lock 即锁定文件 其中会存在项目中所有的依赖包&#xff0c;方便协同合作时都得到同样的以来版本 composer install 命令从当前目录读取 composer.json 文件&#xff0c;处理依赖关系&#xff0c;并把依赖安装到 vendor 目录下。 如果当前目录下存在 composer.lock 文…

如何保证MongoDB的安全性?

上周写了个简短的新闻《MongoDB裸奔&#xff0c;2亿国人求职简历泄漏&#xff01;》&#xff1a; 根据安全站点HackenProof的报告&#xff0c;由于MongoDB数据库没有采取任何安全保护措施&#xff0c;导致共计202,730,434份国人求职简历泄漏。然后很多人评论说MongoDB躺枪了。 …

LXC是什么

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。Linux Container容器是一种内核虚拟化技术&#xff0c;可以提供轻量级的虚拟化&#xff0c;以便隔离进程和资源。LXC为Linux Container的简…

C++ 标准库 vector list map使用方法

[cpp] view plaincopyList&#xff08;链表&#xff09; List将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除&#xff0c;但是随机访问却比较慢.list对象函数 assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器…

导航守卫

导航守卫 to 准备跳转到哪个页面 from 从哪个页面中离开 next 函数 全局守卫 router.beforeEach((to,from,next) > {if(to.path /login || to.path /register){    next();}else{    alert(先登录)    next(/login)} }) 组件守卫 data () {  return{   …

Django中使用Pagination的分页范例源码

将做工程过程重要的内容做个珍藏&#xff0c;下面代码内容是关于Django中使用Pagination的分页范例的代码。 from django.core.paginator import Paginatorobjects [john, paul, george, ringo]p Paginator(objects, 2) p.count4p.num_pages2p.page_range[1, 2] page1 p.pag…

Docker:集装箱式“运输”在软件上的实现

Docker是由PaaS提供商dotCloud在2013年年初创建的一款开源应用引擎&#xff0c;Docker可以自动将任何应用打包成轻量、可移植、自包涵的容器引擎。开发者构建的应用可以一次构建全平台运行&#xff0c;包括本地开发机器&#xff0c;生产环境&#xff0c;虚拟机和云等。 Docker基…

CAMP选股

挑选五只股票&#xff1a;万科A、中国平安、贵州茅台、万华化学和科大讯飞&#xff0c;然后我们以沪深300作为市场基准。import pandas as pd import tushare as ts # 获取数据 pro ts.pro_api() wanke pro.daily(ts_code000002.SZ, start_date20170101) pingan pro.daily(t…

大二下周总结(三)

记录时间第三周所花时间&#xff08;包括上课&#xff09;13h代码行500博客量2所了解到的知识点html java-script java本周用在练习代码的时间自己感觉还可以&#xff0c;由于在第二周课堂练习后觉得自己有许多不足&#xff0c;所以有了必须奋进的压力。 除了编写代码能力的提高…