pandas plot label_Python+Pandas | 分析比特币与股票市场的关系
我们通过使用Python和Pandas技术进行分析,我们将能够在本文中回答该问题。首先,我们将使用免费的API检索过去几年的比特币和股票价格。然后我们将计算股市与比特币价格之间的相关性。最后,我们将结束通过相关矩阵图绘制相关关系的分析。
自从比特币出现以来,我一直想知道比特币在我们的经济中扮演什么角色。以下是三个潜在角色的猜想:
比特币在投资界一直扮演着避风港的角色
比特币跟金融市场一样遵循同样的趋势
比特币价格与股市根本没有关系
让我们使用Python看看!
使用Python检索股票市场价格和比特币价格
为了获取数据进行我们的分析,我将使用financialmodelingprep API检索比特币价格。他们还提供免费的库存数据,但是为了向您展示两种不同的获取数据的方法,我将使用Pandas DataReader来检索库存数据。
作为我们市场数据的代理,我们将使用标准普尔500指数。标准普尔500指数是衡量在美国上市的500家最大公司的股票表现的指数。我们将使用Pandas DataReader下载SP500价格和美联储经济数据(FRED)作为源。
如果您以前从未使用过Pandas DataReader和Pandas,则需要安装软件包。您可以使用pip命令来做到这一点。
pip install pandas_datareader #Pandas data reader may not work with the latest Pandas version,therefore, I recommend you to install Pandas version 0.24:pip install pandas==0.24.2
太好了,现在我们可以使用Python检索数据了。首先,我们将提取过去十年中的S&P500股票价格。请注意,通过使用web.DataReader并指定系列名称(即sp500)和提供程序(即fred),我们可以轻松获取称为SP500的Pandas系列数据。
pd.core.common.is_list_like = pd.api.types.is_list_likeimport pandas_datareader.data as webimport datetimestart = datetime.datetime(2010, 1, 1)end = datetime.datetime(2020, 2, 10)SP500 = web.DataReader(['sp500'], 'fred', start, end)print(SP500)
以上代码行将返回低于标普500普尔系列,其中包含过去10年的标普价格:
检索比特币价格
我们将使用financialmodelingprep API。我们将向API端点发出一个http get请求,该请求将返回包含历史BTC价格的字典:
import requests#BTCUSD contains a dictionaryBTCUSD = requests.get('https://financialmodelingprep.com/api/v3/historical-price-full/crypto/BTCUSD')BTCUSD = BTCUSD.json()BTCUSD = BTCUSD['historical']
我们分析包含在键名historical中的字典。
print(BTCUSD)[{'date': '2020-02-15', 'open': 10315.651367, 'high': 10341.555664, 'low': 10226.138672, 'close': 10244.959961, 'adjClose': 10244.959961, 'volume': 42347495424.0, 'unadjustedVolume': 42347495424.0, 'change': 70.69141, 'changePercent': 0.685, 'vwap': 10270.88477, 'label': 'February 15, 20', 'changeOverTime': 0.00685}, {'date': '2020-02-14', 'open': 10211.... .... ...]}
现在通过查看BTCUSD变量的内容,我们可以看到BTCUSD是词典列表,并且列表中的每个元素都是包含比特币价格的不同日期。BTC价格存储在关键收盘价下。
例如我们看到在2月15日,比特币的价格为10,244美元。我们需要将字典列表转换为Pandas DataFrame。 我们可以使用pd.DataFrame.from_dict()轻松地做到这一点:
BTC = pd.DataFrame.from_dict(BTCUSD)BTC.set_index('date',inplace=True)#Keep only the close columnBTC = BTC[['close']]#Rename the column name to BTCBTC.columns = ['BTC']BTC
最后,我们在两个Pandas DataFrame中获得BTC和S&P 500的价格。现在我们只需要将它们合并在一起。对我们来说幸运的是,使用Python和Pandas可以很容易地做到这一点。
我们可以使用pd.merge在索引上连接两个DataFrame,因为index包含日期。因此,我们想加入标普500指数和BTC在匹配日的价格。
我们可以将等于True的right_index和left_index传递为参数,让Pandas知道我们要使用该索引进行合并。
SP500BTC = BTC.merge(SP500, how='inner',right_index = True,left_index=True)#Drop NA since we have nan values for weekends.S&P500 only trades business daysSP500BTC.dropna(inplace=True)print(SP500BTC)
比特币与标普500价格之间的关系
太好了,我们已准备好数据进行分析。现在我们可以继续查找股票和比特币价格之间的关系。
为此,我们可以使用pandas dataframe.corr()查找Pandas DataFrame列的相关性:
correlation = SP500BTC.corr()print(correlation)###Result:BTC sp500BTC 1.000000 0.834106sp500 0.834106 1.000000
如何解释BTC与标普500指数之间的相关性?
相关矩阵的值范围从-1到1。接近+1意味着两个变量在同一方向上紧密地移动。值为0表示变量之间没有关系。负相关表明变量向不同方向移动。越接近-1,逆关系越强。
通过研究我们的结果,我们发现比特币价格与标准普尔500指数之间存在0.83的强正相关关系。这意味着,当股市价格上涨时,我们可以预期比特币也会跟风上涨。
from statsmodels import api as smimport matplotlib.pyplot as pltsm.graphics.plot_corr(correlation,xnames=list(correlation.columns))plt.show()
图的红色意味着这种关系是强而正的。我们还可以使用linregression和scipy.stats检查这种关系是否具有统计学意义:
#statistically significant?from scipy.stats import linregresslinregress(SP500BTC['sp500'],SP500BTC['BTC'])#H0: BTC and Stock prices are not related#Results:LinregressResult(slope=8.956910705798713, intercept=-18068.59091142212, rvalue=0.8341059841835341, pvalue=0.0, stderr=0.1673358700767462)
因为我们的p值小于0.05,所以我们可以拒绝H0,因此,我们可以从统计学上说比特币和股票价格一起移动。
收尾
使用Python和Pandas,我们分析了股市与比特币价格之间的关系。根据我们的分析结果,可以说BTC和S&P500的价格朝着同一方向移动。
知道这种关系在衰退的经济周期中是否也很有趣。为了进行这种分析,我们可能需要等待一段时间,因为在过去的几年中,我们一直生活在扩张型经济中。请参阅下面的完整脚本:
import pandas as pdpd.core.common.is_list_like = pd.api.types.is_list_likeimport pandas_datareader.data as webimport datetimestart = datetime.datetime(2010, 1, 1)end = datetime.datetime(2020, 2, 10)SP500 = web.DataReader(['sp500'], 'fred', start, end)import requestsBTCUSD = requests.get('https://financialmodelingprep.com/api/v3/historical-price-full/crypto/BTCUSD')BTCUSD = BTCUSD.json()BTCUSD = BTCUSD['historical']BTC = pd.DataFrame.from_dict(BTCUSD)BTC.set_index('date',inplace=True)BTC = BTC[['close']]BTC.columns = ['BTC']SP500BTC = BTC.merge(SP500,how='inner',right_index = True,left_index=True)SP500BTC.dropna(inplace=True)correlation = SP500BTC.corr()print(correlation)from statsmodels import api as smimport matplotlib.pyplot as pltsm.graphics.plot_corr(correlation,xnames=list(correlation.columns))plt.show()#statistically significant?from scipy.stats import linregresslinregress(SP500BTC['sp500'],SP500BTC['BTC'])
End.
作者:区块链研究实验室
来源:区块网
· 零基础入职数据分析就业班 ·
课程形式主为“直播+录播”
课程专享:月考测试通关+课程项目作业+1v1职场生涯规划+班主任辅导学习+资深讲师答疑
课程结束后能熟练掌握SQL、Python、Excel、PPT等数据分析工具
金3银4招聘季,爱数据带你成功入职数据分析!
点击“阅读原文”入职数据分析
pandas plot label_Python+Pandas | 分析比特币与股票市场的关系相关推荐
- Pandas.plot 做图 demo(scatter,bar,pie)
#coding:utf-8import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimH ...
- pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据
作者:Paul 编者按: pandas提供了很多常用的数学和统计方法,本文中将用十分详细的例子来具体进行介绍:另外在许多数据分析工作中,缺失数据是经常发生的,将会具体介绍如何处理缺失数据.本文十分详细 ...
- python画图显示中文乱码_解决Python pandas plot输出图形中显示中文乱码问题
解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...
- pandas DataFrame 直接生成plot图片 pandas.DataFrame.plot()
官方: Dataframe.plot(x=None, y=None, kind='line', ax=None, subplots=False,sharex=None, sharey=False, l ...
- 数据分析:基于Pandas的全球自然灾害分析与可视化
数据分析:基于Pandas的全球自然灾害分析与可视化 问题描述 处理流程 数据预处理 数据提取 按主要类别与年份统计灾害数 统计每类灾害影响的人数 统计从1990到2021年的每类灾害造成的死亡人数 ...
- 知乎爬虫与数据分析(二)pandas+pyecharts数据可视化分析篇(上)
注:代码完整版可移步Github--https://github.com/florakl/zhihu_spider. 知乎爬虫与数据分析(一)数据爬取篇 知乎爬虫与数据分析(三)pandas+pyec ...
- python图片显示中文_解决Python pandas plot输出图形中显示中文乱码问题
解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...
- python pandas 讲解ppt_python-pandas-数据分析技术与编程方法讲座ppt
PPT内容 这是python-pandas-数据分析技术与编程方法讲座ppt,包括了Python入门,开发环境IDE,pandas数据分析库,数据规整化,数据聚合与分组,实例分析--泰坦尼克之灾等内容 ...
- pandas笔记(pandas Data Structures)
pandas笔记(pandas Data Structures) 生信start_site已关注 32020.06.15 03:02:37字数 766阅读 509 pandas包含数据结构和数据操作工 ...
最新文章
- 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
- java接收数据_java 如何接收数据集参数
- H5学习之旅-H5的样式(5)
- bzoj 3195 奇怪的道路
- 转(HP大中华区总裁孙振耀退休感言)
- android 小学课程,小学课堂(小学学习软件)
- 【论文笔记】Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network
- PLC和MCU单片机有什么差异
- 听说去了BAT的 Linuxers 都做过这套面试题!
- python项目结构目录结构_python 项目目录结构
- 二分搜索 POJ 1064 Cable master
- 【天梯选拔月赛】参与者人数(并查集模版题!remember find_father写法!)
- Win10系统解决图片打开方式没有照片查看器
- 开源音乐播放器_测试4个开源音乐播放器等
- ACT托管的CRM软件开发您的业务
- (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……
- 明日之后全部服务器怎么修改,明日之后怎么转区 服务器怎么换
- 乐视x820android最新版本,乐视 Max2 Android 10更新教程
- Hessian RMI功能介绍
- cdn引入elementUi,如何使用message的提示信息——技能提升