1.使用Tushare或者其他手段获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。
1.模块安装
使用pip install tushare指令在Anaconda Prompt终端中安装即可。
pip install tushare
2.模块调用
打开jupyter,导入tushare包:
import tushare as ts
3.查看安装版本
print(f"tushare 版本: {ts.__version__}")
1.获取tushare的token
注册登录tushare网站后,点击个人主页,点击“接口token”选项卡,点击复制token
tushare官网:Tushare数据https://tushare.pro/
这里选择了000001.SZ和000002.SZ两支股票的数据
【作业1代码】
import tushare as ts print(f"tushare 版本: {ts.__version__}")
import tushare as ts import pandas as pd import numpy as np import datetime as dt #下面的*号内容处复制粘贴自己的token码即可 token = '*****************************************' ts.set_token(token) pro = ts.pro_api() # 对000002.SZ拉取数据 df = pro.daily(**{ "ts_code": "000002.SZ", "trade_date": "", "start_date": 20240101, "end_date": 20240331, "offset": "", "limit": "" }, fields=[ "ts_code", "trade_date", "open", "close" ]) print(df)
#将日期转化为时间序列 df['trade_date'] = pd.to_datetime(df['trade_date']) #将日期升序排列 df = df.set_index('trade_date').sort_index(ascending=True) df
#y轴为收盘价 y1 = df['close'] x1 = range(len(y1)) #x1 = df['trade_date'] import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 #绘制收盘价走势图 plt.figure(1) plt.plot(x1,y1) plt.xlabel("日期") plt.ylabel("收盘价") plt.title("2024年1月-3月000002.SZ股票收盘价走势图") plt.show()【000002.SZ走势图效果】
【绘制000001.SZ收盘价走势图】
# 拉取数据 df1 = pro.daily(**{ "ts_code": "000001.SZ", "trade_date": "", "start_date": 20240101, "end_date": 20240331, "offset": "", "limit": "" }, fields=[ "ts_code", "trade_date", "open", "close" ]) print(df1) #将日期转化为时间序列 df1['trade_date'] = pd.to_datetime(df1['trade_date']) #将日期升序排列 df1 = df1.set_index('trade_date').sort_index(ascending=True) df1 #y轴为收盘价 y2 = df1['close'] x2 = range(len(y2)) #x1 = df['trade_date'] import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 #绘制收盘价走势图 plt.figure(1) plt.plot(x2,y2) plt.xlabel("日期") plt.ylabel("收盘价") plt.title("2024年1月-3月000001.SZ股票收盘价走势图") plt.show()【000001.SZ收盘价走势图效果】
2.使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典(SWE)、瑞士(CHE)三个国家近20年的NY.GDP.PCAP.KD数据,作图分析。
1.模块安装
使用pip install pandas-datareader指令在Anaconda Prompt终端中安装即可。
2.打开jupyter,导入pandas-datareader包:
# 导入wb用于查询世界银行数据
# http://ju.outofmemory.cn/entry/308589
# https://pandas-datareader.readthedocs.io/en/latest/readers/world-bank.html?
# highlight=pandas_datareader.wb
# 导入包
import pandas_datareader.wb as worldbank
- # 导入wb用于查询世界银行数据
- # http://ju.outofmemory.cn/entry/308589
- # https://pandas-datareader.readthedocs.io/en/latest/readers/world-bank.html?
- # highlight=pandas_datareader.wb
- # 导入包
- import pandas_datareader.wb as worldbank
- import matplotlib.pyplot as plt
- import pandas as pd
- import seaborn as sns
-
- # 图表内嵌中文字体问题
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- sns.set_style({'font.sans-serif':['simhei','Arial']})
-
- # 起止年,近20年(2021为NAN,故采用2000-2020年数据)
- start_year = 2000
- end_year = 2020
-
- # 下载数据三国美国(USA)、瑞典(SWE)、瑞士(CHE)的"NY.GDP.PCAP.KD"数据
- date = worldbank.download(indicator = "NY.GDP.PCAP.KD",country = ["USA","SWE","CHE"],start = start_year,end = end_year)
- print('"NY.GDP.PCAP.KD数据:',date)
-
- # 合并数据
- dates = date.unstack(level=0)
- dates
- # 画图
- fig,ax = plt.subplots(1,1,figsize=(12,7))
- plt.plot(dates.iloc[:,0],'g-',label="SWE") #Sweden 瑞典
- plt.plot(dates.iloc[:,1],'b-*',label="CHE") #Switzerland 瑞士
- plt.plot(dates.iloc[:,2],'r--',label="USA") #United States 美国
-
- plt.title('美国、瑞典、瑞士三国人均GDP对比',fontsize=20)
- plt.legend()
- plt.xlabel('年份')
- plt.ylabel('GDP')
- ax.set_xticklabels(dates.index,rotation=20,fontsize=14)
- plt.savefig('美国、瑞典、瑞士三国GDP.png',dpi=300)
- plt.show()
3.对于泰坦尼克的数据集,试分析幸存与否与独立登船的相关性(alone数据列)。
- # 引入库
- import matplotlib.pyplot as plt
- import numpy as np
- import seaborn as sns
- import pandas as pd
-
- # 图表内嵌中文字体问题
- plt.rcParams['font.sans-serif']=['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- sns.set_style('whitegrid',{'font.sans-serif':['simhei', 'Arial']})
-
- # 导入数据
- titanic = pd.read_excel('titanic.xlsx')
-
- # 统计幸存者的是否独立登船比例
- survived = titanic.groupby(['alone','survived']).size().unstack()
- survived['sum'] = survived[0]+survived[1]
- survived['生还率'] = survived[1]/survived['sum']
- print('幸存者按照是否独立登船统计的生还者、遇难者:')
- print('0:遇难,1:生还')
- print(survived)
- print('幸存与否与独立登船的相关系数:')
- print(titanic['survived'].corr(titanic['alone']))
- mm = titanic['survived'].corr(titanic['alone'])
- if mm > 0:
- print('幸存与否与独立登船呈正相关')
- else:
- print('幸存与否与独立登船呈负相关')
- print()
- # 画相关系数矩阵
- plt.figure(figsize=(10,8))
-
- # sns.heatmap(survived,corr(),linewidths = 0.1,vmax=1.0,square=True,linecolor='white', annot=True,annot_kws={'size':20,'weight':'bold','color':'white'})
- sns.heatmap(survived,linewidths = 0.1,vmax=1.0,square=True,linecolor='white', annot=True,annot_kws={'size':20,'weight':'bold','color':'green'})
- plt.savefig('相关矩阵.png',dpi=300,bbox_inches='tight')
- plt.show()