数据挖掘实验一

news2024/12/23 18:46:50

一、实验环境及背景

使用软件:
  • 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.coloradmin.cn/o/1625026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安全与应用【一】

目录 1.账号安全控制 1.1 系统账号清理 1.2 密码安全控制 1.3 命令历史限制 1.4 命令总结 2.系统引导和登录控制 2.1 使用su命令切换用户 2.2 限制使用su命令的用户 3.可插拔式认证模块PAM 3.1 linux中的PAM安全认证 3.2 PAM认证原理​编辑 3.3 PAM认证的构成 3.4 P…

UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动

UEFI安全启动模式下安装ubuntu的nvidia显卡驱动 实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) 一、NVIDIA官网下载驱动 1.1在浏览器地址栏输入https://www.nvidia.cn/drivers/lookup/进入网站,接着手动驱动搜索,并…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics (GPB)发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

Linux常用监控命令(笔试面试常考)

1.、free命令 [rootRocky8-node1 ~]# free -htotal used free shared buff/cache available Mem: 1.7Gi 1.1Gi 69Mi 31Mi 554Mi 436Mi Swap: 2.0Gi 258Mi 1.7Gi free命令是Linux系统中用…

paddle ocr v4 微调训练文字识别模型实践

识别步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据准备…

【C++】---STL之list的模拟实现

【C】---STL之list的模拟实现 一、list模拟实现思路二、结点类的实现三、list迭代器的实现1、ListIterator类2、构造函数3、operator*运算符重载5、operator->运算符重载6、operator!运算符重载7、operator运算符重载8、前置9、后置10、前置--11、后置-- 四、lis…

JavaScript云LIS系统概述 前端框架JQuery+EasyUI+Bootstrap医院云HIS系统源码 开箱即用

云LIS系统概述JavaScript前端框架JQueryEasyUIBootstrap医院云HIS系统源码 开箱即用 云LIS(云实验室信息管理系统)是一种结合了计算机网络化信息系统的技术,它无缝嵌入到云HIS(医院信息系统)中,用于连…

uniapp H5实现签名

第一种&#xff1a;跳转签名页面 1、创建审核页面audit.vue <template><view><uni-section title""><view class"auditClass"><uni-forms :model"baseFormData" ref"baseFormRef" :rules"rules&quo…

Docker镜像的创建 和 Dockerfile

一. Docker 镜像的创建 创建镜像有三种方法&#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于 Dockerfile 创建。 1 基于现有镜像创建 &#xff08;1&#xff09;首先启动一个镜像&#xff0c;在容器里做修改docker run -it --name web3 centos:7 /bin/bash …

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题

一、AbstractRoutingDataSource实现多数据源切换 为了实现数据源的动态切换&#xff0c;我们采用了AbstractRoutingDataSource结合AOP反射来自定义注解。通过这种机制&#xff0c;我们可以在运行时根据自定义注解来选择不同的数据源&#xff0c;从而实现灵活高效的数据访问策略…

Linux文件/目录高级管理一(头歌实训)

目录 任务描述 相关知识 Linux修改文件权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相关知识 Linux修改目录权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相…

Linux(Centos)服务器探索ffmpeg笔记 (命令行、Nvidia硬件加速、GPU、CPU、CUDA、h264_nvenc、过滤器、加水印)

目录 前言内容简介为什么会有这篇文章 1、服务器上怎么使用ffmpeg1.1 使用编译好的&#xff08;需要root权限&#xff09;1.2 自己怎么编译&#xff08;需要root权限&#xff09; 2 、非Root用户要怎么安装和使用3、ffmpeg命令的一些使用引导和参数介绍3.1 编译参数3.2 查询支持…

labview中TDMS读写波形图

TDMS与二进制读写速度区别不大&#xff0c;但是它具备关系型数据库的一些优点&#xff0c;经常用于存取波形数据。

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责&#xff1a; 1. 日常数据库的基本安装&#xff0c;维护&#xff0c;升级&#xff0c;监控的; 2. 配合研发部门进行数据库设计支持&#xff0c;协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务&#xff0c;比如数据导入导出&am…

单片机LCD1602显示电子时钟设计,含汇编程序、仿真、论文

目录 1、摘要 2 系统方案 2.1 系统整体方案的论证 3 硬件设计与实现 3.1单片机最小系统 3.2振荡电路的工作原理 3.2时钟电路的工作原理 3.3单片机最小系统电路图 3.4 时钟芯片 3.5 液晶显示电路 4 实物调试及测试 4.1 实物图 4.2仿真结果图如下所示 5、单片机源…

JAVA实现easyExcel动态生成excel

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency><!--工具类--> <dependency><groupId>cn.hutool</groupId><…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中&#xff0c;我们可能会不小心删除了某个重要的文件夹&#xff0c;其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况&#xff0c;不必过于焦虑。本文将为您提供几种有效的恢复方案&#xff0c;希望能帮助您找回误删的文件夹及…