import tushare as ts
import pandas as pd
import numpy as np
import seaborn as sns
pro = ts.pro_api()
df_daily = pro.index_daily(ts_code="000001.SH")
df_daily.head()
pd.set_option('display.width',None)
print(df_daily)

1.获取上证指数的行情数据

df_daily.index = pd.to_datetime(df_daily['trade_date'])
df_daily.index[:5]

2.时间数据的初步处理

#收盘价
import matplotlib.pyplot as plt
df_daily = df_daily.sort_index(ascending=True)
plt.figure(figsize=(12, 6))
df_daily.close['20000101':].plot()
df_daily.close.rolling(60).mean()['20000101':].plot();

3.形成行情的曲线(有一条均线使数据平滑)

#查看上证指数当前行情数据
df_basic = pro.index_dailybasic(ts_code='000001.SH')
df_basic.head()

#用动态市盈率数据来看下当前A股上证的估值水平
plt.figure(figsize=(12, 6))
sns.displot(df_basic.pe_ttm, bins=100)
plt.axvline(x=df_basic.pe_ttm[0], color='red');

生成市盈率的频率图!最多是分布在12.5多一点那里

#再看一下比当前估值水平更低的情况都出现在哪些时期
df_basic.index = pd.to_datetime(df_basic["trade_date"])
plt.figure(figsize=(12, 6))
plt.plot(df_basic.pe_ttm)
plt.axhline(y=df_basic.pe_ttm[0], color="red");

#如果真的要跌到市盈率低的点还需要下降多少个百分比?
now = df_basic.pe_ttm[0]
min = df_basic.pe_ttm.min()
ratio = (now - min) / now
print("ratio: {0:.2f}%".format(ratio * 100))

获取美债数据

df1 = pro.us_tycr(**{ "date": "","start_date": 20000101,"end_date": 20070101,"limit": "","offset": ""},
fields=["date", "m1", "m2","m3",  "m6", "y1","y2","y3","y5", "y7", "y10","y20","y30"])df2 = pro.us_tycr(**{"date": "","start_date": 20070101,"end_date": 20140101,"limit": "", "offset": ""},
fields=[ "date","m1","m2","m3","m6","y1", "y2","y3","y5","y7","y10","y20","y30"])df3 = pro.us_tycr(**{ "date": "","start_date": 20140101,"end_date": 20210101,"limit": "","offset": ""},
fields=["date", "m1", "m2","m3","m6", "y1","y2","y3","y5","y7", "y10","y20","y30"])data = pd.concat([df3, df2, df1], axis=0)data.to_csv('2000-2021年美债收益率及货币量变化.csv')

时间的初步处理

def transfer(data):  # 自定义转换函数for i in range(len(data)):data.iloc[i, 0] = data.iloc[i, 0][0:6]return data.groupby('date').mean()
data_month = transfer(data)sum(data_month.m1.isna()==True)  #查看缺失值个数
sum(data_month.m3.isna()==True)  #查看缺失值个数
sum(data_month.m6.isna()==True)  #查看缺失值个数
sum(data_month.y10.isna()==True)  #查看缺失值个数
sum(data_month.y20.isna()==True)  #查看缺失值个数
sum(data_month.y30.isna()==True)  #查看缺失值个数
data_month.fillna(method='bfill', inplace=True)  #把最邻近填充进去

形成协方差矩阵!

cov_matrix = data_month.cov()
print(cov_matrix)

形成国债和利率之间的关系

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m1', 'y10', 'y20', 'y30']])
plt.legend(labels=['m1', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m1利率的关系')
plt.savefig('./美国10,20,30年期国债与m1利率的关系.jpg')
#国债与M1货币在某些经济周期呈现较强的相关性,而在另外的经济周期却不那么相关
#M0货币=通货 M1=M0+商业银行活期存款

plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m3', 'y10', 'y20', 'y30']])
plt.legend(labels=['m3', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m3利率的关系')
plt.savefig('./美国10,20,30年期国债与m3利率的关系.jpg')
#国债与M3货币在某些经济周期呈现较强的相关性,而在另外的经济周期却不那么相关
#广义货币(M2)=M1+准货币 M3=M2+其他短期流动资产(如国库券、银行承兑汇票、商业票据等)

plt.figure(figsize=(8,8))
plt.plot(data_month.index, data_month[['m6', 'y10', 'y20', 'y30']])
plt.legend(labels=['m6', 'y10', 'y20', 'y30'])
plt.title('美国10,20,30年期国债与m6利率的关系')
plt.savefig('./美国10,20,30年期国债与m6利率的关系.jpg')
#国债与M6货币在某些经济周期呈现较强的相关性,而在另外的经济周期却不那么相关
#M6=M5+短期商业票据#结论:美元取决于货币市场的供需关系,美债取决于债券市场的供需关系,二者没有直接的关系
#由于经济形势的不景气(2008年金融危机),利率降的很低,这样的情形持续了很多年

# 导入tushare
import tushare as ts
# 初始化pro接口
pro = ts.pro_api('b3ebc0a133b9df6877bd09a028468e77afa8bd33b4c7fd7309c6e8dc')
# 拉取数据 000001.SH 上证综指
df = pro.index_monthly(**{"ts_code": "000001.SH", "trade_date": "","start_date": 20000101,"end_date": 20210101, "limit": "", "offset": ""},
fields=[ "ts_code","trade_date", "close","open", "high","low","pre_close", "change","pct_chg", "vol", "amount"])
import pandas as pd
american_bond = pd.read_csv('2000-2021年美债收益率及货币量变化(月).csv')
# df数据是上面带下来的
df['trade_date'] = df['trade_date'].apply(lambda x: x[0:6])
df['trade_date'] = df['trade_date'].astype(int)
df = df[::-1]
df.to_csv('2000-2021上证综指变化(月).csv')
df.set_index('trade_date', inplace=True)
american_bond.set_index('date', inplace=True)
data = pd.concat([df, american_bond], axis=1)
#绘图查看上证综指变化率与美债收益率的关系
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig, ax1 = plt.subplots()
month = [12*i for i in range(21)]
year = [i for i in range(2000, 2021)]
plt.xticks(month, year, rotation=45)
ax1.plot(range(len(data)), data.close, '-r', label='上证综指')
ax1.set_xlabel("年份")
ax1.set_ylabel("上证综指")
ax2 = ax1.twinx()
ax2.plot(range(len(data)), data.y30, 'y', label='美国国债收益率')
ax2.set_ylabel("美国国债收益率")
fig.legend()

本文参考了Python分析上证指数历史数据,发现估值还不够低……_DsFunStudio的博客-CSDN博客_上证指数历史数据 Tushare实战分析美国国债收益率与利率的关系_PD我是你的真爱粉的博客-CSDN博客
tushare实战分析上证综指与美债收益率的关系_PD我是你的真爱粉的博客-CSDN博客

根据这三个链接,再根据自己的理解添加了一些代码作为课程作业

大家可互相交流学习

基于Tushare的上证综指行情分析与影响其涨跌的因素(以美债为例)相关推荐

  1. python tus股票数据分析_python 股票量化分析(一)---基于Tushare平台的个股历史行情获取...

    在浩瀚如烟的股票中,如何将好股选择出来?长线.中线.短线个股如何筛选?国内外政治.经济.地缘博弈基本面对股市的影响有多大,怎样将其纳入股票选择买卖的决策因子?公司财报.未来规划.公司所处行业发展前景怎 ...

  2. 大数据应用实践1:基于开源架构的股票行情分析与预测

    股票市场行情分析与预测一直是数据分析领域里面的重头戏,确切地说IT行业的每一次重大发展的幕后推动者以及新产品(特别是高端产品)的最先尝试者都包含金融行业,特别是证券交易市场,它符合大数据的四大特征:交 ...

  3. 基于SPSS的中国消费者信心指数影响因素分析-----相关性分析

    说明:本案例基于spss数据分析与挖掘实战案例精粹----第10章 案例背景:对受访者的背景资料对消费者信心指数的影响加以研究,并进一步考察其内部的详细作用方式: 分析方法:使用方差分析对自变量进行筛 ...

  4. 基于Tushare的数据搜集与沪市选股

    目录 一. 引言 二.  数据搜集 三.数据预处理 四. XGBoost算法实现 一. 引言 为了回馈tushare平台免费对高校学生开放使用,本人(tushare ID : 421217)与大家分享 ...

  5. 基于多元线性回归的股票分析与预测——R语言

    基于多元线性回归的股票分析与预测 一.数据来源 1.自变量 2.因变量 二.多元线性回归 1. 初步建立多元线性回归模型 (1)数据集划分 (2)建立回归模型 2. 多元线性回归模型的优化 3.模型误 ...

  6. 网站数据分析:基于用户细分的比较分析

    从网站的用户层面,我们根据用户访问的行为特征将用户细分成各种类型,因为用户行为各异,行为统计指标各异,分析的角度各异,所以如果要对用户做细 分,可以从很多角度根据各种规则实现各种不同的分类,看到过有些 ...

  7. 快速谱峭度matlab,一种基于快速谱峭度分析的泵潜在空化故障检测方法与流程

    本发明属于信号处理领域,尤其涉及一种基于快速谱峭度分析泵的实时状态并且检测其潜在空化故障的方法. 背景技术: 高性能离心泵在当今社会上广泛应用和需求巨大.由于工作在高压高速等复杂条件下,离心泵的空化故 ...

  8. 网络安全模型_基于数据驱动的网络安全流量分析总结

    导读 网络和社交流量分析是检测和防御网络攻击的基础.随着数据集的日益剧增,手工定义规则的传统方法逐渐被机器学习(ML)方法替代,这是因为ML有更好的工作性能.在数据驱动的研究背景下,通过研究社交流量和 ...

  9. 腾讯技术课|基于Elastic Stack 搭建日志分析平台

    为了让读者们可以更好的理解「如何基于Elastic Stack 搭建日志分析平台」,腾讯技术工程公众号特别邀请腾讯基础架构部的陈曦工程师通过语音录播分享的方式在「腾讯技术课」小程序里同步录制了语音+P ...

最新文章

  1. css position的父级,css position absolute 相对于父元素的设置方式
  2. 解决输入法图标不见了,控制面板里面也无法设置
  3. 不能卸载java_无法卸载注入的DLL
  4. 如何利用WGET覆写已存在的档案
  5. struts1起服务报错
  6. QML如何与C++交互
  7. SpringCloud工作笔记080---了解一下CXF
  8. algorithm与numeric的一些常用函数
  9. 反射在工厂模式中的使用
  10. RStudio 下载R包的几种方法
  11. 用python生成一段关于文字的二维码(关于刷网课的)
  12. [转载]INNO SETUP注册DLL文件
  13. 计算机网络(韩立刚老师主讲笔记)
  14. GP数据库获取指定时段的所有天数
  15. 骆昊python100天百度云_GitHub - Luffy-cc/Python-100-Days: Python - 100天从新手到大师
  16. 51单片机温度传感器DS18B20
  17. Python合并不同数量的Excel单元格
  18. MySQL 之全文索引--fulltext
  19. Node-js-起步
  20. oracle 创建表 as,Oracle创建表(create table as)

热门文章

  1. IE 浏览器 判断 增加 支持 IE8 IE9 IE10 IE11等 IE浏览器(是不是IE浏览器判断)
  2. python pip install 安装
  3. Kafka3.2.0 + kraft集群安装部署说明
  4. 优惠券和让利哪种营销方式更好?
  5. 迪士尼鳄鱼洗澡背后的传奇人物:哥以前是干DJ的!
  6. Python开发工具Spyder安装
  7. 安工大Linux程序设计实验
  8. react项目中遇到的几个问题
  9. 关于应用~试玩,你想知道的都在这儿了----超详细总结(上篇)
  10. Python 简单编写一个注册邮箱