数据挖掘实验一

ops/2024/9/25 6:19:42/

一、实验环境及背景

使用软件:
  • Anaconda3 Jupyter Notebook
实验内容:
  1. 1.使用Tushare或者其他手段获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。
  2. 2.使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典(SWE)、瑞士(CHE)三个国家近20年的NY.GDP.PCAP.KD数据,作图分析。
  3. 3.对于泰坦尼克的数据集,试分析幸存与否与独立登船的相关性(alone数据列)

二、实验内容

  • 作业题1

1.使用Tushare或者其他手段获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。

(1)Tushare安装与接口调用方法

1.模块安装

使用pip install tushare指令在Anaconda Prompt终端中安装即可。

pip install tushare

2.模块调用

打开jupyter,导入tushare包:

import tushare as ts

3.查看安装版本

print(f"tushare 版本: {ts.__version__}")

(2)实验数据的获取

1.获取tushare的token

注册登录tushare网站后,点击个人主页,点击“接口token”选项卡,点击复制token

tushare官网:Tushare数据icon-default.png?t=N7T8https://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

2.使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典(SWE)、瑞士(CHE)三个国家近20年的NY.GDP.PCAP.KD数据,作图分析。

(1)Pandas_datareader安装及调用

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

(2)作业2代码
# 导入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

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()

 


http://www.ppmy.cn/ops/16383.html

相关文章

Vuforia AR篇(三)— AR模型出场效果

目录 前言一、AR模型出场二、AR出场特效三、添加过渡效果四、效果 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、AR模型出场 创建ARCamer…

华为数字化转型与数据管理实践介绍(附PPT下载)

华为作为全球领先的信息与通信技术(ICT)解决方案提供商,在数字化转型和数据管理领域拥有丰富的实践经验和技术积累。其数字化转型解决方案旨在帮助企业通过采用最新的ICT技术,实现业务流程、组织结构和文化的全面数字化&#xff0…

Apache Flink 流处理-[CentOS|Rocky] 镜像

Flink Docker仓库包含了Dockerfiles用于为Flink构建docker images使用,这些 Dockerfile 由 Apache Flink 社区维护,但 Docker 社区负责在 Docker Hub 上构建和托管映像。目前市面上流行的Flink镜像都是基于Ubuntu镜像构建,由于项目需求变化&a…

centos7 宝塔php7安装mongodb扩展

一、下载、解压源码 下载地址:https://pecl.php.net/package/mongodb 1 2 wget -c https://pecl.php.net/get/mongodb-1.5.3.tgz tar -zxvf mongodb-1.5.3.tgz 二、编译安装源码 1 2 3 4 cd mongodb-1.5.3 /www/server/php/70/bin/phpize ./configure --with-p…

STM32的GPIO控制寄存器开发

寄存器GPIO控制 寄存器地址 寄存器地址计算 某个寄存器地址,由三个参数决定:1、总线基地址(BUS_BASE_ADDR);2,外设基于总线基地址的偏移量(PERIPH_OFFSET);3&#xff…

Linux 安装 nvm,并使用 Jenkins 打包前端

文章目录 nvm是什么nvm下载nvm安装设置 nvm 环境变量设置 Jenkins 打包命令 nvm是什么 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装…

FlyFlow:全新开源版问世,支持SpringBoot3+Flowable7

经过精心打磨和严格测试,我们隆重推出全新FlyFlow开源版,这款源自商业版的强大工具,如今已完美融入SpringBoot3和Flowable7两大核心框架,为开发者带来前所未有的便捷与高效。 SpringBoot3的加持,让FlyFlow在简化开发流…

一、路由基础

1.路由协议的优先级 路由器分别定义了外部优先级和内部优先级(越小越优) 路由选择顺序:外部优先级>>内部优先级(相同时) ①外部优先级:用户可以手工为各路由协议配置的优先级 ②内部优先级&#xf…