python分析股票数据_Python数据可视化——股票数据分析

1.背景

GAFATA,它表示的是GOOGLE,AMAZON,FACEBOOK,APPLE,TENCENT,ALIBABA这六家互联网巨头的首字母缩写。本文主要分析GAFATA这六家公司股票近一年的的涨跌情况。

2.过程

先使用conda安装:

1)在python环境下安装数据分析pandas包,和互联数据获取包pandas-datareader

#导入包

#数据分析包

import pandas as pd

'''互联数据获取包注意:安装包的命令中的连接符是‘-’也就是pandas-datareader。但是这里导入包的连接符是下划线‘_’,也就是pandas-datareader这里一定要注意安装和导入包这两个连接符是不一样的,不然无法导入使用'''

from pandas_datareader import data

# 存在的问题:由于是从国外获取股票数据,会由于网络不稳定,获取数据失败,多运行几次这个cell就好了

'''获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)例如腾讯是港股是:0700.hk'''

#字典:6家公司的股票

gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',

'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700.hk'}

'''定义函数函数功能:计算股票涨跌幅=(现在股价-买入价格)/买入价格输入参数:column是收盘价这一列的数据返回数据:涨跌幅'''

def change(column):

#买入价格

buyPrice=column[0]

#现在股价

#column.size是总共数据条数,序号是从0开始的,所以最后一条数据的序号是总数目-1

curPrice=column[column.size-1]

#累计涨跌幅

priceChange=(curPrice-buyPrice)/buyPrice

#判断股票是上涨,还是下跌

if(priceChange>0):

print('股票累计上涨=',priceChange*100,'%')

elif(priceChange==0):

print('股票累没有变化=',priceChange*100,'%')

else:

print('股票累计下跌',priceChange*100,'%')

#返回数据

return priceChange

阿里巴巴

'''get_data_yahoo表示从雅虎数据源获取股票数据,官网使用操作文档:http://pandas-datareader.readthedocs.io/en/latest/remote_data.html可能存在的问题:1)由于是从国外获取股票数据,会由于网络不稳定,获取数据失败,多运行几次这个cell就好了2)如果多运行几次还是无法获的股票数据,使用这个链接里的方法:https://pypi.org/project/fix-yahoo-finance/0.0.21/3)如果经过上面2个方法还不行,打开这个官网使用文档(http://pandas-datareader.readthedocs.io/en/latest/remote_data.html),换其他的财经数据源试试'''

# 获取哪段时间范围的股票数据

start_date = '2017-11-15'

end_date = '2018-11-15'

#从雅虎财经数据源(get_data_yahoo)获取阿里巴巴股票数据

babaDf=data.get_data_yahoo(gafataDict['阿里巴巴'],start_date, end_date)

#或者从Morningstar数据源获取阿里巴巴数据

#babaDf=data.DataReader(gafataDict['阿里巴巴'],'morningstar',start_date, end_date)

'''每日股票价位信息Open:开盘价High:最高加Low:最低价Close:收盘价Volume:成交量下面我们主要关注每日的收盘价'''

#查看前5行数据

babaDf.head()

#股票数据的行索引是时间序列类型,记录每天的股票信息

babaDf.index

DatetimeIndex(['2017-11-14', '2017-11-15', '2017-11-16', '2017-11-17',

'2017-11-20', '2017-11-21', '2017-11-22', '2017-11-24',

'2017-11-27', '2017-11-28',

...

'2018-11-02', '2018-11-05', '2018-11-06', '2018-11-07',

'2018-11-08', '2018-11-09', '2018-11-12', '2018-11-13',

'2018-11-14', '2018-11-15'],

dtype='datetime64[ns]', name='Date', length=254, freq=None)

#查看数据集情况

babaDf.info()

DatetimeIndex: 254 entries, 2017-11-14 to 2018-11-15

Data columns (total 6 columns):

Open 254 non-null float64

High 254 non-null float64

Low 254 non-null float64

Close 254 non-null float64

Adj Close 254 non-null float64

Volume 254 non-null int64

dtypes: float64(5), int64(1)

memory usage: 13.9 KB

#查看每一列数据类型

babaDf.dtypes

Open float64

High float64

Low float64

Close float64

Adj Close float64

Volume int64

dtype: object

#查看数据集描述统计信息

babaDf.describe()

#获取收盘价Close这一列的数据

closeCol=babaDf['Close']

#调用函数,获取涨跌幅

babaChange=change(closeCol)

股票累计下跌 -14.0656763214 %

谷歌

#获取谷歌股票数据

googDf=data.get_data_yahoo(gafataDict['谷歌'],start_date, end_date)

googDf.head()

'''累计涨幅'''

#获取收盘价Close这一列的数据

closeCol=googDf['Close']

#调用函数,获取涨跌幅

googChange=change(closeCol)

股票累计上涨= 3.77290068226 %

亚马逊

#获取亚马逊股票数据

amazDf=data.get_data_yahoo(gafataDict['亚马逊'],start_date, end_date)

amazDf.head()

'''累计涨幅'''

#获取收盘价Close这一列的数据

closeCol=amazDf['Close']

#调用函数,获取涨跌幅

amazChange=change(closeCol)

股票累计上涨= 42.4510036094 %

Facebook

#获取Facebook股票数据

fbDf=data.get_data_yahoo(gafataDict['Facebook'],start_date, end_date)

fbDf.head()

'''累计涨幅'''

#获取收盘价Close这一列的数据

closeCol=fbDf['Close']

#调用函数,获取涨跌幅

fbChange=change(closeCol)

股票累计下跌 -19.2171615965 %

苹果

#获取苹果股票数据

applDf=data.get_data_yahoo(gafataDict['苹果'],start_date, end_date)

applDf.head()

'''累计涨幅'''

#获取收盘价Close这一列的数据

closeCol=applDf['Close']

#调用函数,获取涨跌幅

applChange=change(closeCol)

股票累计上涨= 11.7135569444 %

腾讯

#获取亚马逊股票数据

txDf=data.get_data_yahoo(gafataDict['腾讯'],start_date, end_date)

#腾讯是港股,所以这里的收盘价是港币,按照今天的汇率将其转化为美元

exchange=0.1278 #港币兑换美元的汇率,这个值可以根据在网上查到当天的最新汇率

#为了方便后期多家公司的股价比较,增加新的一列收盘价(美元)

txDf['Close_dollar']= txDf['Close']* exchange

#txDf.dropna(axis=0,how='any',inplace=True)#(axis=0,how='any')

txDf.head()

'''累计涨幅'''

#获取收盘价Close这一列的数据

closeCol=txDf['Close']

#调用函数,获取涨跌幅

txChange=change(closeCol)

股票累计下跌 -28.3550929504 %

数据可视化

%matplotlib inline

#导入可视化包

import matplotlib.pyplot as plt

折线图:绘制股票走势

'''横轴x是股票时间(babaDf.index是Pandas二维数据Dataframe的行索引,这里是时间序列)纵轴y是收盘价Close这一列数据plot默认是线条图'''

babaDf.plot(x=babaDf.index,y='Close')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2017年阿里巴巴股价走势')

#显示网格

plt.grid(True)

#显示图形

plt.show()

分析结果:通过图中显然可以看出阿里巴巴的股票价格总体趋势是增长的,是值得投资的一家公司。

'''上面绘图后,横坐标没有显示出来,原因:1)先查看你的数据框索引是不是日期类型的,如果不是,将数据框索引转换成日期类型的2)如果获取数据来源,前面换成了数据源(morningstar),后面绘图的时候需要重置索引,代码如下:babaDf.reset_index(inplace=True)babaDf.set_index('Date',inplace=True)#查看索引是否重置成功babaDf.head()'''

"\n上面绘图后,横坐标没有显示出来,原因:\n1)先查看你的数据框索引是不是日期类型的,如果不是,将数据框索引转换成日期类型的\n2)如果获取数据来源,前面换成了数据源(morningstar),后面绘图的时候需要重置索引,代码如下:\n\nbabaDf.reset_index(inplace=True)\nbabaDf.set_index('Date',inplace=True)\n#查看索引是否重置成功\nbabaDf.head()\n\n"

散点图:成交量和股价

'''我们给plot传入的横轴x坐标轴数据成交量这一列的数据,纵轴y坐标轴数据是收盘价这一列的数据,同时增加了一个参数叫kind这个值表示绘制图形的类型,这里的值等于scatter表示绘制散点图。kind取值(图形类型)参考官方文档:http://pandas.pydata.org/pandas-docs/stable/visualization.html'''

babaDf.plot(x='Volume',y='Close',kind='scatter')

#x坐标轴文本

plt.xlabel('成交量')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('成交量和股价')

#显示网格

plt.grid(True)

#显示图形

plt.show()

#得到相关系数矩阵

babaDf.corr()

GAFATA股价走势比较

#绘制谷歌的画纸1

ax1=googDf.plot(x=googDf.index,y='Close')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax1,x=amazDf.index,y='Close')

#Facebook

fbDf.plot(ax=ax1,x=fbDf.index,y='Close')

#苹果

applDf.plot(ax=ax1,x=applDf.index,y='Close')

#阿里巴巴

babaDf.plot(ax=ax1,x=babaDf.index,y='Close')

#腾讯

txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年GAFATA股价累计涨幅比较')

#显示网格

plt.grid(True)

plt.show()

'''使用label自定义图例'''

#绘制谷歌的画纸1

ax1=googDf.plot(x=googDf.index,y='Close',label='谷歌')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax1,x=amazDf.index,y='Close',label='亚马逊')

#Facebook

fbDf.plot(ax=ax1,x=fbDf.index,y='Close',label='Facebook')

#苹果

applDf.plot(ax=ax1,x=applDf.index,y='Close',label='苹果')

#阿里巴巴

babaDf.plot(ax=ax1,x=babaDf.index,y='Close',label='阿里巴巴')

#腾讯

txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar',label='腾讯')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年GAFATA累计涨幅')

#显示网格

plt.grid(True)

plt.show()

因为谷歌和亚马逊的股价比较高,造成我们看不出其他4家公司的股票走势。 所以根据股价我们可以将这6家公司分成2组,一组是股价较高的谷歌和亚马逊。另外一组是股价较低的4家公司。

'''第1组:谷歌,亚马逊'''

#绘制谷歌的画纸2

ax2=googDf.plot(x=googDf.index,y='Close',label='谷歌')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax2,x=amazDf.index,y='Close',label='亚马逊')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年谷歌和亚马逊累计涨幅')

#显示网格

plt.grid(True)

plt.show()

'''第2组:4家公司'''

#绘制Facebook的画纸3

#通过指定画纸ax,在同一张画纸上绘图

#Facebook

ax3=fbDf.plot(x=fbDf.index,y='Close',label='Facebook')

#苹果

applDf.plot(ax=ax3,x=applDf.index,y='Close',label='苹果')

#阿里巴巴

babaDf.plot(ax=ax3,x=babaDf.index,y='Close',label='阿里巴巴')

#腾讯

txDf.plot(ax=ax3,x=txDf.index,y='Close_dollar',label='腾讯')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('GAFATA2018年累计涨幅')

#显示网格

plt.grid(True)

plt.show()

柱状图:六家公司股票的平均值

#6家公司股票收盘价平均值

gafataMeanList=[googDf['Close'].mean(),#谷歌

amazDf['Close'].mean(),#亚马逊

fbDf['Close'].mean(),#Facebook

applDf['Close'].mean(),#苹果

babaDf['Close'].mean(),#阿里巴巴

txDf['Close_dollar'].mean()#腾讯

]

#创建pandas一维数组Series

gafataMeanSer=pd.Series(gafataMeanList,

index=['谷歌',

'亚马逊',

'Facebook',

'苹果',

'阿里巴巴',

'腾讯'])

gafataMeanSer.plot(kind='bar',label='GAFATA')

#图片标题

plt.title('2017年GAFATA股价平均值')

#x坐标轴文本

plt.xlabel('公司名称')

#y坐标轴文本

plt.ylabel('股价平均值(美元)')

plt.grid(True)

plt.show()

分析结果:可以看出,仅从股票价格上来判断,亚马逊和谷歌的股票价格要远远的超过了其他四家。但是这里只是算的平均值,下面我们看下用四分位数绘制的箱线图

#存放6家公司的收盘价

closeDf=pd.DataFrame()

#合并6家公司的收盘价

closeDf=pd.concat([closeDf,googDf['Close'],#谷歌

amazDf['Close'],#亚马逊

fbDf['Close'],#Facebook

applDf['Close'],#苹果

babaDf['Close'],#阿里巴巴

txDf['Close_dollar']#腾讯

],axis=1)

#重命名列名为公司名称

closeDf.columns=['谷歌','亚马逊','Facebook','苹果','阿里巴巴','腾讯']

#closeDf.head()

#箱线图

closeDf.plot(kind='box')

plt.grid(True)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502985.shtml

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

相关文章

python语言程序设计考试内容_MOOC_Python语言程序设计(嵩天)考试_第一周

以下内容仅用作个人学习记录 单项选择题 点击选项选择正确答案,每题有且仅有一个正确答案 1 Guido van Rossum正式对外发布Python版本的年份是: A 1991 B 2002 C 1998 D 2008 正确答案 A Python成功了,所以早年的开发历史也受到关注&…

mac连接手机 vm_使用mac ssh连接谷歌云vm实例

谷歌云上提供了在线操作云节点的shell,但是毕竟不如本地多年操作的shell用起来爽,因此,本文以mac iTerm为例,记录一下本地连接谷歌云的操作过程和遇到的问题。1.谷歌云提供的在线shell一. 在本地创建秘钥ssh-keygen -t rsa -f [yo…

dataframe 一列的不同值_python数据分析包|Pandas-02之缺失值(NA)处理

本篇详解pandas中缺失值(Missing data handling)处理常用操作。缺失值处理常用于数据分析数据清洗阶段;Pandas中将如下类型定义为缺失值:NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,‘-NaN’, ‘-na…

https抓包_从Wireshark抓包看HTTPS的加密功能

近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来…

【Python】pip管理Python包

命令&#xff1a;pip install <包名> 安装指定的包。 pip install ipython #或者 pip install ipython -i https://mirrors.aliyun.com/pypi/simple/ 命令&#xff1a;pip uninstall <包名> 删除指定的包。 pip uninstall ipython 命令&#xff1a;pip list 显…

centos7开启vnc服务_阿里云CentOS 7搭建VNC远程桌面服务步骤方法

因为需要在centos7配置远程桌面&#xff0c;所以找了很多教程方法&#xff0c;结果都没有远程连接成功&#xff0c;以下是总结了很多教程后整理出的方法&#xff0c;在centos7下比较适用&#xff0c;其他的版本貌似有很大区别&#xff0c;这里不做研究。一、图形界面安装(MATE …

python整数类型在每一台计算机上的取值范围是一样的_关于python统计一个整数列表中不同数值种类数的问题。...

下面这段代码中&#xff0c;kind_num用于统计那个整数列表中有几种不同数值的整数。 class Solution(object): def distributeCandies(self, candies): """ :type candies: List[int] :rtype: int """ loc len(candies) mol loc % 2 if not (2…

ndarray python 映射_在Matlab的delsq演示中,用numpy方法对向量映射进行ndarray处理?...

下面复制了演示。G中的编号是不同的&#xff0c;但数字只是标签(标签网格让我困惑)。在import numpy as npfrom scipy import sparsefrom scipy.sparse import linalgimport matplotlib.pyplot as pltdef numgrid(n):"""NUMGRID Number the grid points in a tw…

实验报告总结_小学四年级数学下册全册知识点总结 ,家有四年级学生的家长收藏...

一、观察物体知识技能目标知道从低到高观察物体&#xff0c;体会出不同的位置看到的范围是不一样的&#xff0c;由远到近看到的范围是越来越小&#xff0c;从而体会不同距离观察物体形状的变化。知识检测摆一种物体&#xff0c;从不同的面去观察&#xff0c;看到的面是什么图形…

配置中心_Nacos做配置中心

一、简单使用Nacos官方快速开始文档&#xff1a;https://nacos.io/zh-cn/docs/quick-start.html在每个服务中编写bootstrap文件&#xff0c;服务使用该文件启动&#xff0c;并根据该文件的指引到Nacos获取配置信息bootstrap文件示例&#xff0c;可以不用写端口&#xff0c;需要…

python numpy逆_numpy.linalg.inv返回奇异矩阵的逆函数 - python

下面的矩阵是单数&#xff0c;并且AFAIK尝试将其求反应导致 numpy.linalg.linalg.LinAlgError: Singular matrix 但是我得到了一些输出矩阵。请注意&#xff0c;输出矩阵是无意义的结果&#xff0c;因为它具有一行0&#xff08;这是不可能的&#xff0c;因为矩阵的逆本身应该是…

mysql lock_MySQL-锁总结

锁锁机制用于管理对共享资源的并发访问。lock和latch在数据库中&#xff0c;lock和Latch都称为锁&#xff0c;但是两者意义不同。latch称为闩锁(shuang suo)&#xff0c;其要求锁定的时间必须非常短。若持续的时间长&#xff0c;则应用的性能会非常差。在InnoDB存储引擎中&…

hive 两个没有null指定的表左关联的结果有null_Hive的优化原则

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/174469951本篇将 Hive 的优化分成三个部分:第一部分是 SQL 通用语法优化&#xff0c;第二部分是针对 Hive 所具有的数据倾斜的优化&#xff0c;第三部分则介绍一些通用性的 Hive 参数设置优化。一、语法优化 SQL 的语法优化本…

django使用mysql_设置Django以使用MySQL

我想稍微远离PHP&#xff0c;学习Python。为了使用Python进行Web开发&#xff0c;我需要一个框架来帮助模板和其他事情。我有一台非生产服务器&#xff0c;用于测试所有Web开发内容。这是一个运行MariaDB而不是常见的MySQL服务器软件包的Debian 7.1 LAMP堆栈。昨天我安装了Djan…

python数据分析兼职能挣钱吗_Python开发能从事数据分析吗

Python不仅是人工智能时代最佳的编程语言&#xff0c;同时也是数据分析、科学运算的首选编程语言。学习Python就业方向多&#xff0c;比如Web网站开发、人工智能等。Python数据分析师需要掌握哪些技能&#xff0c;从各大招聘网站对其的基本任职要求可以了解一二&#xff1a; 1、…

mysql字段重命名_MySQL中使用SQL语句对字段进行重命名

MySQL中&#xff0c;如何使用SQL语句来对表中某一个字段进行重命名呢&#xff1f;我们将使用alter table 这一SQL语句。重命名字段的语法为&#xff1a;alter table change 。现在我们来尝试把test表中的t_name字段重命名为t_name_new字段。1、首先查看一下当前test表的结构mys…

python中打开文件open_Python中打开文件的方式(With open)

1.读文件 要以读文件的模式打开一个文件对象&#xff0c;使用Python内置的open()函数&#xff0c;传入文件名和标 示符&#xff1a; f open( /Users/michael/test.txt, r ) 标示符’r’表示读&#xff0c;这样&#xff0c;我们就成功地打开了一个文件。 如果文件不存在&#x…

php连接mysql的方式_php有几种连接mysql的方法

展开全部大致62616964757a686964616fe4b893e5b19e31333363356566有以下方法&#xff1a;1、使用 mysql &#xff0c;提示&#xff1a;此种方法官方不建议。<?php $con mysql_connect("localhost","root","");if (!$con){die(Could not conn…

jdk 安装_Linux入门之Linux CentOS安装jdk

第一步&#xff1a;创建jdk安装目录(该/usr/local/src 目录是空的,最好把我们自己下载的放到这,容易区分)mkdir -p /usr/local/src/jdk第二步&#xff1a;查看之前是否安装rpm -qa | grep -i jdk若之前安装过jdk&#xff0c;下次安装一定把之前的删除干净第三步&#xff1a;命令…

mysql存储过程注释方法_mysql存储过程 详细注释

原文&#xff1a;https://my.oschina.net/u/3582142/blog/1581929delimiter $$ /* 重新定义mysql结束符&#xff0c;而不再是分号是结束符 */create procedure mergeDeclare() /* 创建存储过程 */BEGIN/*定义局部变量*/DECLARE id INT DEFAULT 0;DECLARE Done INT DEFAULT 0;DE…