需要源码请点赞关注收藏后评论区留言私信~~~
下面针对阿里巴巴、谷歌、亚马逊、Facebook、苹果和腾讯六家公司股票数据进行了分析与可视化描述,数据分析前需要安装互联数据获取包pandas-datareader
先使用conda安装:
1)python3环境
2)安装互联数据获取包pandas-datareader
实现步骤
1:导入模块
2:获取数据
首先定义要获取股票数据的来源和时间区间
然后分别获取阿里巴巴、谷歌、亚马逊、Facebook、苹果和腾讯的股票数据
数据说明
列名 High Low Open Close Volume
含义 最高价 最低价 开盘价 收盘价 成交量
接下来从上到下分别是阿里 谷歌 亚马逊 facebook 苹果 腾讯的股票信息
接下来我们以阿里巴巴数据为例进行详细分析 其他公司的省略
首先查看数据集情况
查看数据集统计信息
增加一列DayHL 表示日最高价和最低价之间的差值
数据可视化
下面绘制阿里巴巴的股票走势图
从图中可以看出 阿里巴巴的股票价格2018 6-7月涨势良好且比较稳定 从2018年9月开始总体趋势处于下滑状态
下面绘制阿里巴巴股票成交量和股价之间的散点图
接着计算相关系数矩阵
导入另外五家公司的股价数据 并且对六家公司的股价进行走势比较 并画出曲线图
因为谷歌和亚马逊的股价比较高,造成我们看不出其他4家公司的股票走势。 所以根据股价我们可以将这6家公司分成2组,一组是股价较高的谷歌和亚马逊。另外一组是股价较低的4家公司
接下来比较六家公司股票的平均值
可见亚马逊和谷歌非常的高,腾讯比较低
代码
部分代码如下 需要全部代码请点赞关注收藏后评论区留言私信~~~
#导入包
#数据分析包
import pndas as pd
from panda_datareader import data
import matlotlib
import matplotlib.pyplot as plt
font = {'mily' : 'SimHei','weight' : 'bold','size' : '12'}
plt.rc('font', **font) # 步骤一(设置字体的更多属性)
plt.rc('xes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
# 存在的问题:由于是从国外获取股票数据,会由于网络不稳定,获取数据失败,多运行几次这个cell就好了
'''
获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)
例如腾讯是港股是:0700.hk
'''
#字典:6家公司的股票
gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',= '2019-05-01'
'''
get_data_yahoo表示从雅虎数据源获取股票数据
雅虎股票数据源文档:http://pandas-datareader.readthedocs.io/en/latest/remote_data.html#yahoo-finance
'''
# # 获取哪段时间范围的股票数据
# start_date = '2018-01-01'
# end_date = '2019-05-01'
#获取阿里巴巴股票数据
ALbbDf = data.get_data_yahoo(gafataDict['阿里巴巴'],start_date, end_date)
#查看前5行数
ALbbDf.tail()
#获取谷歌股票数据
GoogleDf=data.get_data_yahoo(gafataDict['谷歌'],start_date, end_date)
GoogleDf.tail()
#获取亚马逊股票数据
AmazDf=data.get_data_yahoo(gafataDict['亚马逊'],start_date, end_date)
AmazDf.tail()
#获取Facebook股票数据
FBDf=data.get_data_yahoo(gafataDict['Facebook'],start_date, end_date)
FBDf.tail()
#导入可视化包
import matplotlib.pyplot as pltfont = {'family' : 'SimHei','weight' : 'bold','size' : '15'}
plt.rc('font', **font) # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
'''
横轴x是股票时间(babaDf.index是Pandas二维数据Dataframe的行索引,这里是时间序列)
纵轴y是收盘价Close这一列数据
plot默认是线条图
'''ALbbDf.plot(y = "Close",color = "blue")
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
plt.xticks(rotation = 60)
#图片标题
plt.title('2018年初至今阿里巴巴股价走势')
#显示图例
plt.grid()#显示图形
plt.show()
'''
我们给plot传入的横轴x坐标轴数据成交量这一列的数据,
纵轴y坐标轴数据是收盘价这一列的数据,
同时增加了一个参数叫kind这个值表示绘制图形的类型,这里的值等于scatter表示绘制散点图。
kind取值(图形类型)参考官方文档:http://pandas.pydata.org/pandas-docs/stable/visualization.html
'''
matplotlib.rcParams['font.size'] = 12
ALbbDf.plot(x='Volume',y='Close',kind='scatter')
#x坐标轴文本
plt.xlabel('成交量')
#y坐标轴文本
plt.ylabel('股价(美元)')#图片标题
plt.title('成交量和股价')
#显示图形
plt.show()
#绘制谷歌的画纸1
plt.figure(figsize=(3,10))ax1=GoogleDf.plot(y='Close')#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
AmazDf.plot(ax=ax1,y='Close')
#Facebook
FBDf.plot(ax=ax1,y='Close')
#苹果
AppleDf.plot(ax=ax1,y='Close')
#阿里巴巴
ALbbDf.plot(ax=ax1,y='Close')
#腾讯
TCDf.plot(ax=ax1,y='Close')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年至今6家公司股价走势比较')plt.legend()
plt.show()
'''
使用label自定义图例
'''
#绘制谷歌的画纸1
ax1=GoogleDf.plot(y='Close',label='谷歌')
#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
AmazDf.plot(ax=ax1,y='Close',label='亚马逊')
#Facebook
FBDf.plot(ax=ax1,y='Close',label='Facebook')
#苹果
AppleDf.plot(ax=ax1,y='Close',label='苹果')
#阿里巴巴
ALbbDf.plot(ax=ax1,y='Close',label='阿里巴巴')
#腾讯
TCDf.plot(ax=ax1,y='Close',label='腾讯')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年至今6家公司股价走势比较')
#显示网格plt.show()'''
第1组:谷歌,亚马逊
'''
#绘制谷歌的画纸2
ax2=GoogleDf.plot(y='Close',label='谷歌')
#通过指定画纸ax,在同一张画纸上绘图
#亚马逊
amazDf.plot(ax=ax2,y='Close',label='亚马逊')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年谷歌和亚马逊股价走势比较')
#显示网格
plt.grid(True)
plt.show()
创作不易 觉得有帮助请点赞关注收藏~~~