文章目录

  • 5. 通过tushare读取股票数据
    • 5.1. 切换pip3的源
    • 5.2. 获取股票数据
      • 5.2.1. 前复权和后复权
      • 5.2.2. 读取tushare数据,保存到csv文件
      • 5.2.3. 读取cvs文件,分析某价格所在区间
      • 5.2.4. 读取csv文件,汇总区间分布
      • 5.2.5. 读取db数据,加载到DataFrame

5. 通过tushare读取股票数据

5.1. 切换pip3的源

mkdir ~/.pip
vim ~/.pip/pip.conf输入下面的内容:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com然后使用pip3 install xxx,就可以了

5.2. 获取股票数据

5.2.1. 前复权和后复权

  • 前复权是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性。
  • 后复权是在K线图上以除权前的价格为基准来测算除权后股票的市场成本价。就是把除权后的价格按以前的价格换算过来。简单的说,就是保持先前的价格不变,而将以后的价格增加。

5.2.2. 读取tushare数据,保存到csv文件

import tushare as ts
ts.set_token('你的tushare token')
pro = ts.pro_api()
# 日线行情,https://waditu.com/document/2?doc_id=27
# df = pro.daily(ts_code='601939.SH', adj='hfq', start_date='20180801', end_date='20210801')
# A股复权行情, https://waditu.com/document/2?doc_id=146
df = ts.pro_bar(ts_code='601939.SH', adj='qfq', start_date='20050101', end_date='20210805')
df.to_csv("601939-7.csv")

5.2.3. 读取cvs文件,分析某价格所在区间

# 区间
import pandas as pd
import numpy as npdf = pd.read_csv("601939-7.csv")
df = df[df["trade_date"] > 20170101]
print(df)
df1 = df["close"] <= 5.712
print(df1.value_counts())
print(np.percentile(df["close"], 20))  # 自20170101起,此结果是5.712,代表 <5.712 的有20%, >5.712的有80%

5.2.4. 读取csv文件,汇总区间分布

import pandas as pd
import numpy as npdef interval_statistics(data, intervals):range_list = []count_list = []percent_list = []if len(data) == 0:returnfor num in data:for interval in intervals:lr = tuple(interval.split('~'))left, right = float(lr[0]), float(lr[1])if left <= num <= right:intervals[interval] += 1for key, value in intervals.items():# print("%10s" % key, end='')  # 借助 end=''可以不换行range_list.append(key)# print("%10s" % value, end='')  # "%10s" 右对齐count_list.append(value)# print('%16s' % '{:.3%}'.format(value * 1.0 / len(data)))percent_list.append('%s' % '{:.3%}'.format(value * 1.0 / len(data)))# 构造返回的DataFrameresult_dict = {"range": range_list, "count": count_list, "percent": percent_list}df = pd.DataFrame(result_dict)return dfif __name__ == '__main__':start = 1  # 区间左端点number_of_interval = 20  # 区间个数length = 0.5  # 区间长度# 从1开始,每0.5一个区间,共20个区间intervals = {'{}~{}'.format(length * x + start, length * x + start + length): 0 for x inrange(number_of_interval)}  # 生成区间# {'1.0~1.5': 0, '1.5~2.0': 0, '2.0~2.5': 0, '2.5~3.0': 0, '3.0~3.5': 0, '3.5~4.0': 0, '4.0~4.5': 0, '4.5~5.0': 0, '5.0~5.5': 0, '5.5~6.0': 0, '6.0~6.5': 0, '6.5~7.0': 0, '7.0~7.5': 0, '7.5~8.0': 0, '8.0~8.5': 0, '8.5~9.0': 0, '9.0~9.5': 0, '9.5~10.0': 0, '10.0~10.5': 0, '10.5~11.0': 0}print(intervals)# 读取数据df = pd.read_csv("601939-7.csv")df = df[df["trade_date"] > 20170101]print(df)# data = np.random.randint(start, start + length * number_of_interval + 1, size=1000)  # 待统计数据(1000随机数)data = df["close"]# print(data)result_dataframe = interval_statistics(data, intervals)print(result_dataframe)# 结果如下
# 1.0~1.5         0          0.000%
# 1.5~2.0         0          0.000%
# 2.0~2.5         0          0.000%
# 2.5~3.0         0          0.000%
# 3.0~3.5         0          0.000%
# 3.5~4.0         0          0.000%
# 4.0~4.5        19          1.701%
# 4.5~5.0        90          8.057%
# 5.0~5.5        47          4.208%
# 5.5~6.0       386         34.557%
# 6.0~6.5       382         34.199%
# 6.5~7.0       165         14.772%
# 7.0~7.5        15          1.343%
# 7.5~8.0        10          0.895%
# 8.0~8.5         3          0.269%
# 8.5~9.0         0          0.000%
# 9.0~9.5         0          0.000%
# 9.5~10.0         0          0.000%
# 10.0~10.5         0          0.000%
# 10.5~11.0         0          0.000%

5.2.5. 读取db数据,加载到DataFrame

# DataFrame连接数据库db(需要pymysql模块)
import pandas as pd
import numpy as np
import pymysql
import datetime# 链接数据库,分别是IP,端口,用户名,密码,数据库,编码形式,注意这里的密码和IP我隐藏了,请自己输入你的
con = pymysql.connect(host='127.0.0.1', port=3306, user='kelvin', passwd='#Hello123', db='kelvin', charset='utf8')
cursor = con.cursor()
sql = 'SELECT * FROM stock_601939'
cursor.execute(sql)
# 获得列名
column = [col[0] for col in cursor.description]
# 获得数据
data = cursor.fetchall()
# 获得DataFrame格式的数据
df = pd.DataFrame(list(data), columns=column)
print(df)
df1 = df[df["transaction_date"] > datetime.date(2018, 8, 1)]
price = np.percentile(df1["last_price"], 10)  # np.percentile(arr, 70)
print(price)

利用python进行股票分析(五)通过tushare读取股票数据相关推荐

  1. NLP实战:利用Python理解、分析和生成文本 | 赠书

    导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...

  2. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  3. 利用python进行显著性分析

    利用python进行显著性分析 实验数据 做的是朋友的 呃呃植物什么什么实验 ,相关数据已经打码,最右侧的一列是 spss 的显著性分析的结果 代码 最终设想是能实现和 SPSS 一样或者近似的结果 ...

  4. 利用Python爬取《囧妈》豆瓣短评数据,并进行snownlp情感分析

    利用Python爬取<囧妈>豆瓣短评数据,并进行snownlp情感分析 一.电影评论爬取 今年的贺岁片<囧妈>上映前后,在豆瓣评论上就有不少网友发表了自己的观点,到底是好评的声 ...

  5. 如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件?

    如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件? 1.问题描述 2.解决过程 2.1 问题分析: 2.2 解决思路 3.运行结果 1.问题描述 最近在处理一堆工 ...

  6. Python爬虫笔记——分析AJAX传递的JSON获取数据-初步分析动态网页

    转载文章链接: Python爬虫:分析AJAX传递的JSON获取数据-初步分析动态网页(1) [4]实战:爬取动态网页的两种思路爬取新浪趣图(1) [5]实战:爬取动态网页的两种思路爬取新浪趣图(2) ...

  7. python股票数据分析_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  8. python自动生成分析报告_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  9. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

最新文章

  1. 10 张图打开 CPU 缓存一致性的大门
  2. 分布式数字签名令牌TokenProvider
  3. java中随机数彩票练习_基于javascript实现彩票随机数生成(简单版)
  4. HTML滚动条自定义
  5. 使用RabbitMQ实现延迟任务
  6. html中如何实现选择存储路径的功能_Tomcat 路由请求的实现 Mapper
  7. linux服务器配置python环境_服务器python环境配置福利,CentOS ,Linux 一键下载python3和环境配置...
  8. 鼠标双击检测_雷蛇巴塞利斯蛇无线游戏鼠标评测:青出于蓝胜于蓝
  9. vue设置isactive_Vue 编码风格指南!
  10. POJ2002 Squares
  11. 在html中使用rect函数,HTML canvas rect()用法及代码示例
  12. centos安装office及PDF阅读器
  13. 金融行业相关知识点整理
  14. VS2015安装配置assimp和glm
  15. 百度地图大头针图片的自定义
  16. python正态分布函数_数学之美_正态分布(Python代码)
  17. 考华为HCIP证书多钱?
  18. SolidWorks怎么开启RealView图形渲染功能
  19. android 4.0 原生短信,Android 4.0 短信发不出去解决办法
  20. dubbo学习视频资料

热门文章

  1. 统信桌面操作系统V20专业版(1022)发布
  2. 基于asp.net+vbscript+wsc编写网站
  3. Android自定义View实现方位刻度尺(类似于吃鸡手游)
  4. 移远 EC200S 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程
  5. CSharp中集合与字典Contains效率差别
  6. 特定领域知识图谱知识融合方案(实体对齐)论文合集
  7. 如何低成本搭建dnslog服务器
  8. 网页前端监控系统(错误日志,接口监控)的使用
  9. whitelabel error page SpEL RCE漏洞复现
  10. 台式计算机开机没反应,台式机开机没反应怎么回事