目录

第1关:涨幅和成交量

第2关 涨幅与最高价

第3关 跌幅与最低价


本关任务:完成涨幅和成交量股票分析。

相关知识

1.sorted()函数 2.集合运算

sorted()函数

sorted() 函数对所有可迭代的对象进行排序操作。

  1. sorted(iterable, key=None, reverse=False)

参数说明

  • iterable 可迭代对象。
  • key 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse 排序规则,reverse=True 降序, reverse=False 升序(默认)。

编程 在右侧编辑器中补充代码,根据用户输入,利用集合运算和这些文件数据输出以下内容:

  1. 涨幅和成交量均在前10名的股票
  2. 涨幅或成交量在前10名的股票
  3. 涨幅前10名,但成交量未进前10名的股票
  4. 涨幅和成交量不同时在前10名的股票 交易数据文件数据内容格

第1关:涨幅和成交量

import numpy as np
# 设置常量,对应各列数据的语义,方便索引
HIGH = 0
LOW = 1
CLOSE = 3
VOLUME = 4def statistics_of_all(code_list):"""  @参数 code_list:股票代码列表,列表类型  接收股票数据文件名列表,逐个统计各股票数据文件涨跌幅、总成交量、最高价和最低价。  涨跌幅计算公式为:(最新记录收盘价-最早记录收盘价) / 最早记录收盘价 * 100  为方便处理,读入数据时,略过日期列。  """statistics_of_stock = []for code in code_list:data_of_code = np.genfromtxt('datas/' + code, dtype=None,usecols=[1, 2, 3, 4, 5, 6], delimiter=',',skip_header=1)# 计算当前股票涨跌幅、总成交量、最高价和最低价  uplift_or_fall = round((data_of_code[:, CLOSE][-1] - data_of_code[:, CLOSE][0]) / data_of_code[:, CLOSE][0] * 100, 2)volumes = round(sum(data_of_code[:, VOLUME]), 2)statistics_of_stock.append([code[:6], uplift_or_fall, volumes])return statistics_of_stock  # 每支股票涨跌幅、总成交量、最高价和最低价def top_10_uplift(statistics_of_stock):"""  @参数 statistics_of_stock:每支股票涨跌幅、总成交量、最高价和最低价统计信息,列表类型  按涨幅降序排序,涨幅相同时按股票代码降序排序,取排名前10的股票,  返回排名前10的股票代码,返回值为列表类型。  """# 补充你的代码statistics_of_stock1 = sorted(statistics_of_stock, key=lambda x : (x[1],x[0]), reverse=True)list1 = []for i in range(10): list1.append(statistics_of_stock1[i][0])return list1def top_10_volumes(statistics_of_stock):"""  @参数 statistics_of_stock:每支股票涨跌幅、总成交量、最高价和最低价统计信息,列表类型  按成交量降序排序,成交量相同时,按股票代码降序排序,取成交量前10的股票代码,返回成交量  最大的10支股票代码列表。  """# 补充你的代码statistics_of_stock2 = sorted(statistics_of_stock, key=lambda x : (x[2],x[0]), reverse=True)list2 = []for i in range(10): list2.append(statistics_of_stock2[i][0])return list2def uplift_and_volumes(top_uplift, top_volumes):"""@参数 top_high,最高价在前10名的股票代码,字符串@参数 top_volumes,成交量在前10名的股票代码,字符串返回一个列表,其元素依序为以下4个:涨幅和成交量均在前10名的股票,按股票代码升序,列表涨幅或成交量在前10名的股票,按股票代码升序,列表涨幅前10名,但成交量未进前10名的股票,按股票代码升序,列表涨幅和成交量不同时在前10名的股票,按股票代码升序,列表"""# 补充你的代码u_and_v = []u_and_v0 = sorted([x for x in top_uplift if x in top_volumes])u_and_v.append(u_and_v0)u_and_v1 =sorted(top_volumes + [x for x in top_uplift if x not in top_volumes])u_and_v.append(u_and_v1)u_and_v2 = sorted([x for x in top_uplift if x not in top_volumes])u_and_v.append(u_and_v2)u_and_v3 = sorted([x for x in u_and_v1 if x not in u_and_v0])u_and_v.append(u_and_v3)return u_and_vdef operation():"""接收一个字符串为参数,根据参数值调用不同函数完成任务"""statistics_of_list = statistics_of_all(stock_lst)  # 对获取的股票数据进行统计  uplift_set = top_10_uplift(statistics_of_list)  # 涨幅前10名集合volumes_set = top_10_volumes(statistics_of_list)  # 成交量前10名集合u_and_v = uplift_and_volumes(uplift_set, volumes_set)opt = input()if opt == '涨幅与成交量':print('涨幅和成交量均在前10名的股票:')print(u_and_v[0])  # 涨幅和成交量均在前10名的股票print('涨幅或成交量在前10名的股票:')print(u_and_v[1])  # 涨幅或成交量在前10名的股票print('涨幅前10名,但成交量未进前10名的股票:')print(u_and_v[2])  # 涨幅前10名,但成交量未进前10名的股票print('涨幅和成交量不同时在前10名的股票:')print(u_and_v[3])  # 涨幅和成交量均在前10名的股票else:print('输入错误')
if __name__ == '__main__':filename = 'datas/沪市股票top300.csv'              # 股票名称与代码文件stock_lst = ['600000.csv', '600004.csv', '600006.csv','600007.csv', '600008.csv', '600009.csv','600010.csv', '600011.csv', '600012.csv','600015.csv', '600016.csv', '600018.csv','600019.csv', '600020.csv', '600026.csv','600028.csv', '600029.csv', '600030.csv','600031.csv', '600033.csv', '600036.csv']operation()

第2关 涨幅与最高价

import numpy as np
# 设置常量,对应各列数据的语义,方便索引
HIGH = 0
CLOSE = 3
VOLUME = 4def statistics_of_all(code_list):"""@参数 code_list:股票代码列表,列表类型接收股票数据文件名列表,逐个统计各股票数据文件涨幅、总成交量、最高价和最低价。涨幅计算公式为:(最新记录收盘价-最早记录收盘价) / 最早记录收盘价 * 100为方便处理,读入数据时,略过日期列。"""statistics_of_stock = []for code in code_list:data_of_code = np.genfromtxt('datas/' + code, dtype=None,usecols=[1, 2, 3, 4, 5, 6], delimiter=',',skip_header=1)# 计算当前股票涨幅、总成交量、最高价和最低价uplift_or_fall = round((data_of_code[:, CLOSE][-1] - data_of_code[:, CLOSE][0]) / data_of_code[:, CLOSE][0] * 100, 2)volumes = round(sum(data_of_code[:, VOLUME]), 2)high = round(max(data_of_code[:, HIGH]), 2)statistics_of_stock.append([code[:6], uplift_or_fall, volumes, high])return statistics_of_stock  # 每支股票涨幅、总成交量、最高价和最低价def top_10_uplift(statistics_of_stock):"""@参数 statistics_of_stock:每支股票涨幅、总成交量、最高价和最低价统计信息,列表类型按涨幅降序排序,涨幅相同时按股票代码降序排序,取排名前10的股票,返回排名前10的股票代码,返回值为列表类型。"""# 补充你的代码statistics_of_stock1 = sorted(statistics_of_stock, key=lambda x : x[1], reverse=True)list1 = []for i in range(10): list1.append(statistics_of_stock1[i][0])return list1def top_10_high(statistics_of_stock):"""@参数 statistics_of_stock:每支股票涨幅、总成交量、最高价和最低价统计信息,列表类型按最高价降序排序,最高价相同时,按股票代码降序排序返回,取排名前10的股票,返回最高价最高的10支股票代码的列表。"""# 补充你的代码statistics_of_stock2 = sorted(statistics_of_stock, key=lambda x : x[3], reverse=True)list2 = []for i in range(10): list2.append(statistics_of_stock2[i][0])return list2def high_and_uplift(top_uplift, top_high):"""@参数 top_high,最高价在前10名的股票代码,字符串@参数 top_uplift,涨幅在前10名的股票代码,字符串返回一个列表,其元素依序为以下4个:涨幅和最高价均在前10名的股票代码,按股票代码升序,列表涨幅或最高价在前10名的股票代码,按股票代码升序,列表涨幅前10名,但最高价未进前10名的股票代码,按股票代码升序,列表涨幅和最高价不同时在前10名的股票,按股票代码升序,列表票代码。"""# 补充你的代码u_and_v = []u_and_v0 = sorted([x for x in top_uplift if x in top_high])u_and_v.append(u_and_v0)u_and_v1 =sorted(top_high + [x for x in top_uplift if x not in top_high])u_and_v.append(u_and_v1)u_and_v2 = sorted([x for x in top_uplift if x not in top_high])u_and_v.append(u_and_v2)u_and_v3 = sorted([x for x in u_and_v1 if x not in u_and_v0])u_and_v.append(u_and_v3)return u_and_vdef operation():"""接收一个字符串为参数,根据参数值调用不同函数完成任务"""statistics_of_list = statistics_of_all(stock_lst)  # 对获取的股票数据进行统计uplift_set = top_10_uplift(statistics_of_list)  # 涨幅前10名集合high_set = top_10_high(statistics_of_list)  # 最高价前10名集合u_and_v = high_and_uplift(uplift_set, high_set)opt = input()if opt == '涨幅与最高价':# 补充你的代码print('涨幅和最高价均在前10名的股票:')print(u_and_v[0])  # 涨幅和最高价均在前10名的股票print('涨幅或最高价在前10名的股票:')print(u_and_v[1])  # 涨幅或最高价在前10名的股票print('涨幅前10名,但最高价未进前10名的股票:')print(u_and_v[2])  # 涨幅前10名,但最高价未进前10名的股票print('涨幅和最高价不同时在前10名的股票:')print(u_and_v[3])  # 涨幅和最高价均在前10名的股票    else:print('输入错误')
if __name__ == '__main__':filename = 'datas/沪市股票top300.csv'              # 股票名称与代码文件stock_lst = ['600000.csv', '600004.csv', '600006.csv','600007.csv', '600008.csv', '600009.csv','600010.csv', '600011.csv', '600012.csv','600015.csv', '600016.csv', '600018.csv','600019.csv', '600020.csv', '600026.csv','600028.csv', '600029.csv', '600030.csv','600031.csv', '600033.csv', '600036.csv']operation()

第3关 跌幅与最低价

import numpy as np# 设置常量,对应各列数据的语义,方便索引
HIGH = 0
LOW = 1
CLOSE = 3
VOLUME = 4def statistics_of_all(code_list):"""@参数 code_list:股票代码列表,列表类型接收股票数据文件名列表,逐个统计各股票数据文件涨跌幅、总成交量、最高价和最低价。涨跌幅计算公式为:(最新记录收盘价-最早记录收盘价) / 最早记录收盘价 * 100为方便处理,读入数据时,略过日期列。"""statistics_of_stock = []for code in code_list:data_of_code = np.genfromtxt('datas/' + code, dtype=None,usecols=[1, 2, 3, 4, 5, 6], delimiter=',',skip_header=1)# 计算当前股票跌幅、总成交量、最高价和最低价uplift_or_fall = round((data_of_code[:, CLOSE][-1] - data_of_code[:, CLOSE][0]) / data_of_code[:, CLOSE][0] * 100, 2)volumes = round(sum(data_of_code[:, VOLUME]), 2)high = round(max(data_of_code[:, HIGH]), 2)low = round(min(data_of_code[:, LOW]), 2)statistics_of_stock.append([code[:6], uplift_or_fall, volumes, high, low])return statistics_of_stock  # 每支股票涨跌幅、总成交量、最高价和最低价def top_10_uplift(statistics_of_stock):"""@参数 statistics_of_stock:每支股票涨跌幅、总成交量、最高价和最低价统计信息,列表类型按涨幅降序排序,涨幅相同时按股票代码降序排序,取排名前10的股票,返回排名前10的股票代码,返回值为列表类型。"""# 补充你的代码statistics_of_stock1 = sorted(statistics_of_stock, key=lambda x : x[1], reverse=True)list1 = []for i in range(10): list1.append(statistics_of_stock1[i][0])return list1def top_10_fall(statistics_of_stock):"""@参数 statistics_of_stock:每支股票涨跌幅、总成交量、最高价和最低价统计信息,列表类型按跌幅升序排序,跌幅相同时,按股票代码升序排序,取排名前10的股票,返回跌幅最大的10支股票代码的集合。"""# 补充你的代码statistics_of_stock2 = sorted(statistics_of_stock, key=lambda x : x[1], reverse=False)list2 = []for i in range(10): list2.append(statistics_of_stock2[i][0])return list2def top_10_low(statistics_of_stock):"""@参数 statistics_of_stock:每支股票涨跌幅、总成交量、最高价和最低价统计信息,列表类型按最低价升序排序,最低价相同时,按股票代码升序排序,取排名前10的股票,返回最低价最低的10支股票代码集合。"""# 补充你的代码statistics_of_stock3 = sorted(statistics_of_stock, key=lambda x : x[4], reverse=False)list3 = []for i in range(10): list3.append(statistics_of_stock3[i][0])return list3def low_and_fall(top_fall, top_low):"""@参数 top_low,最低价在前10名的股票代码,字符串@参数 top_fall,跌幅在前10名的股票代码,字符串返回一个列表,其元素依序为以下4个跌幅和最低价均在前10名的股票代码,按股票代码升序,列表跌幅或最低价在前10名的股票代码,按股票代码升序,列表跌幅前10名,但最低价未进前10名的股票代码,按股票代码升序,列表跌幅和最高价不同时在前10名的股票,按股票代码升序,列表"""# 补充你的代码u_and_v = []u_and_v0 = sorted([x for x in top_fall if x in top_low])u_and_v.append(u_and_v0)u_and_v1 =sorted(top_low + [x for x in top_fall if x not in top_low])u_and_v.append(u_and_v1)u_and_v2 = sorted([x for x in top_fall if x not in top_low])u_and_v.append(u_and_v2)u_and_v3 = sorted([x for x in u_and_v1 if x not in u_and_v0])u_and_v.append(u_and_v3)return u_and_vdef operation():"""接收一个字符串为参数,根据参数值调用不同函数完成任务"""statistics_of_list = statistics_of_all(stock_lst)  # 对获取的股票数据进行统计fall_set = top_10_fall(statistics_of_list)  # 跌幅前10名集合low_set = top_10_low(statistics_of_list)  # 最低价前10名集合u_and_v = low_and_fall(fall_set, low_set)opt = input()if opt == '跌幅与最低价':# 补充你的代码print('跌幅和最低价均在前10名的股票:')print(u_and_v[0])  # 涨幅和最高价均在前10名的股票print('跌幅或最低价在前10名的股票:')print(u_and_v[1])  # 涨幅或最高价在前10名的股票print('跌幅前10名,但最低价未进前10名的股票:')print(u_and_v[2])  # 涨幅前10名,但最高价未进前10名的股票print('跌幅和最低价不同时在前10名的股票:')print(u_and_v[3])  # 涨幅和最高价均在前10名的股票  else:print('输入错误')if __name__ == '__main__':filename = 'datas/沪市股票top300.csv'              # 股票名称与代码文件stock_lst = ['600000.csv', '600004.csv', '600006.csv','600007.csv', '600008.csv', '600009.csv','600010.csv', '600011.csv', '600012.csv','600015.csv', '600016.csv', '600018.csv','600019.csv', '600020.csv', '600026.csv','600028.csv', '600029.csv', '600030.csv','600031.csv', '600033.csv', '600036.csv']operation()

7.3 股票分析(project)相关推荐

  1. 股票分析平台 python_GitHub - pythonstock/stock: stock,股票系统。使用python进行开发。...

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  2. python 股票分析库_GitHub - reference-project/stock-1: stock,股票系统。使用python进行开发。...

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  3. python 股票分析库_GitHub - MrFiona/stock: stock,股票系统。使用python进行开发。

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  4. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  5. python mysql股票分析_一颗韭菜的自我修养:用Python分析下股市,练练手

    股市跌宕起伏.7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语. 然而,经历了连续近 10 个交易日的快牛行情后,上证指数上涨势头放缓.这是牛市,还是熊 ...

  6. Python股票分析系列——基础股票数据操作(二).p4

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...

  7. java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc

    基于Java语言开发的个性化股票分析技术:随机指数(KDJ) KDJ指标又叫随机指标,是由乔治·蓝恩博士(GeorgeLane)最早提出的,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析 ...

  8. Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  9. python股票数据分析_Python股票分析(一)获取历史数据

    股票分析最重要的是获取历史数据,现在网上各种数据接口层出不穷,最近发现一个免费好用的接口,和大家分享一下. 证券宝(网址www.baostock.com)是一个免费.开源的证券数据平台,最重要的是:无 ...

最新文章

  1. 有关Adobe公司的PostScript语言授权问题
  2. Science:致病菌激活根系内生微生物组抵抗病害的功能
  3. BPM实例分享:如何设置表单字体样式
  4. 几款不错的VisualStudio2010插件
  5. error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void)”中被引用
  6. linux sftp目录无法切换,linux – SFTP用户无法编辑或创建文件
  7. netty的handler里面ctx.channel().writeAndFlush()和ctx.writeAndFlush()的区别
  8. 【word自带的公式编辑】如何删除公式里面的空行or对齐公式
  9. STP-16-根防护,BPDU防护和BPDU过滤
  10. Python批量重命名iPhone、微信照片,视频-按照拍摄时间重命名
  11. 【微信支付付款至零钱】
  12. LoRaWAN 帧计数机制及典型问题分析
  13. 【PAT】A1114 Family Property (25 point(s))
  14. iOS10和Xcode8适配
  15. neovim安装 vim-plug插件管理器安装
  16. RP50 RP55 吉他效果器音色推荐
  17. 大数据杂谈篇:认识大数据生态(个人心得分享)
  18. Project ERROR: Cannot run target compiler ‘aarch64-linux-gnu-g++‘.
  19. Express 框架
  20. 文档结构图 字体大小调节

热门文章

  1. 自适应红色大气虚拟手机靓号交易商城网站源码
  2. 史上最全的iOS各种设备信息获取总结(iPhone X 详细信息已更新)
  3. 移动安全Android逆向系列:Dalvik概念破解实例
  4. mybatis org.apache.ibatis.ognl.ParseException: Encountered “ <IDENT> “AND ““ at line 1, column 14.
  5. PROFIBUS总线光纤模块在矿场设备的应用案例
  6. 让服务器底层性能飞起,异步,不一样的感觉
  7. 3D游戏建模真的不缺人了!好好看看再入行吧
  8. 计算机二级index函数怎么用,Excel函数-match、index(上)-计算机二级Office
  9. 百度 建立安全连接失败
  10. php5.6使用mysql_php5.6+MySQL5.6+Apache2.4环境搭建安装图文教程