• 数据挖掘实验一


    一、实验环境及背景

    使用软件:
    • 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代码】

    1. import tushare as ts
    2. print(f"tushare 版本: {ts.__version__}")
    1. import tushare as ts
    2. import pandas as pd
    3. import numpy as np
    4. import datetime as dt
    5. #下面的*号内容处复制粘贴自己的token码即可
    6. token = '*****************************************'
    7. ts.set_token(token)
    8. pro = ts.pro_api()
    9. # 对000002.SZ拉取数据
    10. df = pro.daily(**{
    11. "ts_code": "000002.SZ",
    12. "trade_date": "",
    13. "start_date": 20240101,
    14. "end_date": 20240331,
    15. "offset": "",
    16. "limit": ""
    17. }, fields=[
    18. "ts_code",
    19. "trade_date",
    20. "open",
    21. "close"
    22. ])
    23. print(df)

    1. #将日期转化为时间序列
    2. df['trade_date'] = pd.to_datetime(df['trade_date'])
    3. #将日期升序排列
    4. df = df.set_index('trade_date').sort_index(ascending=True)
    5. df

    1. #y轴为收盘价
    2. y1 = df['close']
    3. x1 = range(len(y1))
    4. #x1 = df['trade_date']
    5. import matplotlib.pyplot as plt
    6. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    7. plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
    8. #绘制收盘价走势图
    9. plt.figure(1)
    10. plt.plot(x1,y1)
    11. plt.xlabel("日期")
    12. plt.ylabel("收盘价")
    13. plt.title("2024年1月-3月000002.SZ股票收盘价走势图")
    14. plt.show()

    【000002.SZ走势图效果】

    【绘制000001.SZ收盘价走势图】

    1. # 拉取数据
    2. df1 = pro.daily(**{
    3. "ts_code": "000001.SZ",
    4. "trade_date": "",
    5. "start_date": 20240101,
    6. "end_date": 20240331,
    7. "offset": "",
    8. "limit": ""
    9. }, fields=[
    10. "ts_code",
    11. "trade_date",
    12. "open",
    13. "close"
    14. ])
    15. print(df1)
    16. #将日期转化为时间序列
    17. df1['trade_date'] = pd.to_datetime(df1['trade_date'])
    18. #将日期升序排列
    19. df1 = df1.set_index('trade_date').sort_index(ascending=True)
    20. df1
    21. #y轴为收盘价
    22. y2 = df1['close']
    23. x2 = range(len(y2))
    24. #x1 = df['trade_date']
    25. import matplotlib.pyplot as plt
    26. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    27. plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
    28. #绘制收盘价走势图
    29. plt.figure(1)
    30. plt.plot(x2,y2)
    31. plt.xlabel("日期")
    32. plt.ylabel("收盘价")
    33. plt.title("2024年1月-3月000001.SZ股票收盘价走势图")
    34. 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代码
    1. # 导入wb用于查询世界银行数据
    2. # http://ju.outofmemory.cn/entry/308589
    3. # https://pandas-datareader.readthedocs.io/en/latest/readers/world-bank.html?
    4. # highlight=pandas_datareader.wb
    5. # 导入包
    6. import pandas_datareader.wb as worldbank
    7. import matplotlib.pyplot as plt
    8. import pandas as pd
    9. import seaborn as sns
    10. # 图表内嵌中文字体问题
    11. plt.rcParams['font.sans-serif'] = ['SimHei']
    12. plt.rcParams['axes.unicode_minus'] = False
    13. sns.set_style({'font.sans-serif':['simhei','Arial']})
    14. # 起止年,近20年(2021为NAN,故采用2000-2020年数据)
    15. start_year = 2000
    16. end_year = 2020
    17. # 下载数据三国美国(USA)、瑞典(SWE)、瑞士(CHE)的"NY.GDP.PCAP.KD"数据
    18. date = worldbank.download(indicator = "NY.GDP.PCAP.KD",country = ["USA","SWE","CHE"],start = start_year,end = end_year)
    19. print('"NY.GDP.PCAP.KD数据:',date)
    20. # 合并数据
    21. dates = date.unstack(level=0)
    22. dates

     

    1. # 画图
    2. fig,ax = plt.subplots(1,1,figsize=(12,7))
    3. plt.plot(dates.iloc[:,0],'g-',label="SWE") #Sweden 瑞典
    4. plt.plot(dates.iloc[:,1],'b-*',label="CHE") #Switzerland 瑞士
    5. plt.plot(dates.iloc[:,2],'r--',label="USA") #United States 美国
    6. plt.title('美国、瑞典、瑞士三国人均GDP对比',fontsize=20)
    7. plt.legend()
    8. plt.xlabel('年份')
    9. plt.ylabel('GDP')
    10. ax.set_xticklabels(dates.index,rotation=20,fontsize=14)
    11. plt.savefig('美国、瑞典、瑞士三国GDP.png',dpi=300)
    12. plt.show()

    •  作业题3

    3.对于泰坦尼克的数据集,试分析幸存与否与独立登船的相关性(alone数据列)。

    1. # 引入库
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. import seaborn as sns
    5. import pandas as pd
    6. # 图表内嵌中文字体问题
    7. plt.rcParams['font.sans-serif']=['SimHei']
    8. plt.rcParams['axes.unicode_minus'] = False
    9. sns.set_style('whitegrid',{'font.sans-serif':['simhei', 'Arial']})
    10. # 导入数据
    11. titanic = pd.read_excel('titanic.xlsx')
    12. # 统计幸存者的是否独立登船比例
    13. survived = titanic.groupby(['alone','survived']).size().unstack()
    14. survived['sum'] = survived[0]+survived[1]
    15. survived['生还率'] = survived[1]/survived['sum']
    16. print('幸存者按照是否独立登船统计的生还者、遇难者:')
    17. print('0:遇难,1:生还')
    18. print(survived)
    19. print('幸存与否与独立登船的相关系数:')
    20. print(titanic['survived'].corr(titanic['alone']))
    21. mm = titanic['survived'].corr(titanic['alone'])
    22. if mm > 0:
    23. print('幸存与否与独立登船呈正相关')
    24. else:
    25. print('幸存与否与独立登船呈负相关')
    26. print()

    1. # 画相关系数矩阵
    2. plt.figure(figsize=(10,8))
    3. # sns.heatmap(survived,corr(),linewidths = 0.1,vmax=1.0,square=True,linecolor='white', annot=True,annot_kws={'size':20,'weight':'bold','color':'white'})
    4. sns.heatmap(survived,linewidths = 0.1,vmax=1.0,square=True,linecolor='white', annot=True,annot_kws={'size':20,'weight':'bold','color':'green'})
    5. plt.savefig('相关矩阵.png',dpi=300,bbox_inches='tight')
    6. plt.show()

     

  • 相关阅读:
    携职教育:系统集成项目管理工程师报名一直待审核怎么办?
    Java中的String类
    05 easyPoi的使用
    数据分析之pandas(进阶)
    中高级前端开发需要掌握的vue知识点
    相机的白平衡
    什么是云桌面?未来有可能替代电脑吗?
    开发累了就摸个鱼,帮我修改一下中式英语
    【图像分割】基于改进粒子算法优化阈值实现图像分割附matlab代码
    【UIPickerView案例07-省市选择界面数据展示03-城市选择Bug修复 Objective-C语言】
  • 原文地址:https://blog.csdn.net/weixin_73122330/article/details/138189294