Advertisement

python数据挖掘实验报告1

阅读量:

实验内容及步骤(包含简要的实验步骤流程)
1.使用Pandas_datareader获取任意两支股票近三个月的交易数据。做出收盘价的变动图像。
2.使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典(SWE)、瑞士(CHE)三个国家近20年的NY.GDP.PCAP.KD数据,作图分析。
3.对于泰坦尼克的数据集,试分析幸存与否与独立登船的相关性(alone数据列)。

1.取五粮液(000858.sz)和古井贡酒(000596.sz)两只股票的三个月交易数据,做出收盘的变动图像。

需要注意的是目前模块已经迁徙到pandas-datareader包中,因此导入模块时需要由import pandas.io.data as web更改为import pandas_datareader.data as web,需要先下载pandas_datareader包在这里插入图片描述

复制代码
    #导入pandas_datareader/datetime/seaborn/matplotlib库
    import pandas_datareader.data as webdata
    import datetime
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    
    #处理Seaborn图表内嵌中文字体问题
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False 
    sns.set_style({'font.sans-serif':['simhei','Arial']})
    
    #用datatime生成日期数据
    start_time = datetime.datetime(2020,6,30)
    end_time = datetime.datetime(2020,9,30)
    
    #通过Yahoo财经,查询股票信息
    stock_code1 = input('美股直接输入股票代码如GOOG \n港股输入代码+对应股市,如腾讯:0700.hk \n国内股票需要区分上证和深证,股票代码后面加.ss或者.sz\n你要查询的股票代码是:')
    stock_info1 = webdata.get_data_yahoo(stock_code1,start_time,end_time)
    
    #展示前5行
    #print(stock_info1.head())
    
    stock_code2 = input('另一只要查询的股票代码是:')
    stock_info2 = webdata.get_data_yahoo(stock_code2,start_time,end_time)
    
    
    #绘制股票价格波动图
    print('股票收盘价对比:')
    sns.set()
    plt.figure(figsize=(10,4))
    plt.plot(stock_info1['Close'],'r-',label=stock_code1)
    plt.plot(stock_info2['Close'],'k--',label=stock_code2)
    plt.legend()
    plt.savefig('股票收盘.png')
    plt.show()

在这里插入图片描述
这里在做的时候,要pip下载一个datetime的库。要升级pip版本,按照cmd的提示命令就可以升级了。

  1. 使用Pandas_datareader获取世界银行数据库中美国(USA)、瑞典(SWE)、瑞士(CHE)三个国家近20年的NY.GDP.PCAP.KD数据,并作图分析。
复制代码
    #导入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
    
    #处理Seaborn图表内嵌中文字体问题
    sns.set()
    sns.set_style({'font.sans-serif':['simhei','Arial']})
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False 
    
    start_year = 1999
    end_year = 2019
    
    #查询数据库中所有国家信息
    #countries = worldbank.get_countries()
    
    #读取美国(USA)、瑞典(SWE)、瑞士(CHE)的NY.GDP.PCAP.KD数据
    
    dat = worldbank.download(indicator="NY.GDP.PCAP.KD", country=["USA", "SWE","CHE"], start=start_year, end=end_year)
    dat2draw=dat.unstack(level=0)
    #dat2draw.plot()
    
    plt.figure(figsize=(10,4))
    plt.plot(dat2draw.iloc[:,0],'r-',label="SWE")
    plt.plot(dat2draw.iloc[:,1],'b-*',label="CHE")
    plt.plot(dat2draw.iloc[:,2],'g--',label="USA")
    plt.title("人均GDP对比(美元计价)",fontsize=20)
    plt.legend()
    plt.savefig("三国GDP.png",dpi=300, bbox_inches="tight")

在这里插入图片描述
补充:iloc提取[[行],[列]]
比如
在这里插入图片描述
在这里插入图片描述
提取第0列的第0-2行在这里插入图片描述
这样是提取全部行,第0列
在这里插入图片描述
这样是提取表格到第一条信息

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

复制代码
    import matplotlib.pyplot as plt
    from matplotlib import pyplot as plt
    import seaborn as sns
    
    #处理Seaborn图表内嵌中文字体问题
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False 
    sns.set_style('whitegrid',{'font.sans-serif':['simhei','Arial']})
    
    #载入泰坦尼克数据库,显示乘客信息的头5行
    PasTit = sns.load_dataset('titanic')
    print('前5行数据:')
    print(PasTit.head())
    
    #统计幸存者是否独立登船
    survived=PasTit.groupby(['alone','survived']).size().unstack()
    survived['sum']=survived[0]+survived[1]
    survived['生还率']=survived[1]/survived['sum']
    print()
    print('乘客按照是否独立登船:')
    print('False:不是独立登船;True:独立登船')
    print(survived)
    
    #幸存与否与独立登船相关性分析(相关系数)
    X=PasTit['survived']
    Y=PasTit['alone']
    print(X.corr(Y))
    
    #生成相关性热力图
    plt.subplots(figsize=(9, 5)) # 设置画面大小
    sns.heatmap(survived, annot=True, vmax=1, square=True, cmap="Blues")
    plt.savefig('热力图.png')
    plt.show()

在这里插入图片描述
这里有疑问的是形成的表格数据,必须要用survived这个参数才能生成热力图,不是很明白为什么。
形成的表格做条形图也做不出想要的效果,试了很长时间没有画出来。上课的时候再去询问一下老师。

五、实验总结(包括心得体会、问题回答及实验改进意见,可附页)
通过本次实验
1.巩固了Python程序编制,Numpy、Pandas、seaborn和Matplotlib包的使用。
2.掌握使用Pandas_datareader获取基本的数据,使用webdata.get_data_yahoo的方法从yahoo财经获取财经信息。
3.使用Matplotlib、seaborn做出收盘价的变动图像、近20年的NY.GDP.PCAP.KD数据和相关系数热力图
4.发现了一些要注意的点和疑惑的地方,对dataframe生成、索引切片和matplotlib画图还存在疑问,留存上课询问老师。

全部评论 (0)

还没有任何评论哟~