- 点击上方“中国统计网”订阅我吧!-

我们通过使用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 | 分析比特币与股票市场的关系相关推荐

  1. Pandas.plot 做图 demo(scatter,bar,pie)

    #coding:utf-8import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimH ...

  2. pandas plot label_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据

    作者:Paul 编者按: pandas提供了很多常用的数学和统计方法,本文中将用十分详细的例子来具体进行介绍:另外在许多数据分析工作中,缺失数据是经常发生的,将会具体介绍如何处理缺失数据.本文十分详细 ...

  3. python画图显示中文乱码_解决Python pandas plot输出图形中显示中文乱码问题

    解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...

  4. pandas DataFrame 直接生成plot图片 pandas.DataFrame.plot()

    官方: Dataframe.plot(x=None, y=None, kind='line', ax=None, subplots=False,sharex=None, sharey=False, l ...

  5. 数据分析:基于Pandas的全球自然灾害分析与可视化

    数据分析:基于Pandas的全球自然灾害分析与可视化 问题描述 处理流程 数据预处理 数据提取 按主要类别与年份统计灾害数 统计每类灾害影响的人数 统计从1990到2021年的每类灾害造成的死亡人数 ...

  6. 知乎爬虫与数据分析(二)pandas+pyecharts数据可视化分析篇(上)

    注:代码完整版可移步Github--https://github.com/florakl/zhihu_spider. 知乎爬虫与数据分析(一)数据爬取篇 知乎爬虫与数据分析(三)pandas+pyec ...

  7. python图片显示中文_解决Python pandas plot输出图形中显示中文乱码问题

    解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...

  8. python pandas 讲解ppt_python-pandas-数据分析技术与编程方法讲座ppt

    PPT内容 这是python-pandas-数据分析技术与编程方法讲座ppt,包括了Python入门,开发环境IDE,pandas数据分析库,数据规整化,数据聚合与分组,实例分析--泰坦尼克之灾等内容 ...

  9. pandas笔记(pandas Data Structures)

    pandas笔记(pandas Data Structures) 生信start_site已关注 32020.06.15 03:02:37字数 766阅读 509 pandas包含数据结构和数据操作工 ...

最新文章

  1. 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
  2. java接收数据_java 如何接收数据集参数
  3. H5学习之旅-H5的样式(5)
  4. bzoj 3195 奇怪的道路
  5. 转(HP大中华区总裁孙振耀退休感言)
  6. android 小学课程,小学课堂(小学学习软件)
  7. 【论文笔记】Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network
  8. PLC和MCU单片机有什么差异
  9. 听说去了BAT的 Linuxers 都做过这套面试题!
  10. python项目结构目录结构_python 项目目录结构
  11. 二分搜索 POJ 1064 Cable master
  12. 【天梯选拔月赛】参与者人数(并查集模版题!remember find_father写法!)
  13. Win10系统解决图片打开方式没有照片查看器
  14. 开源音乐播放器_测试4个开源音乐播放器等
  15. ACT托管的CRM软件开发您的业务
  16. (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……
  17. 明日之后全部服务器怎么修改,明日之后怎么转区 服务器怎么换
  18. 乐视x820android最新版本,乐视 Max2 Android 10更新教程
  19. Hessian RMI功能介绍
  20. cdn引入elementUi,如何使用message的提示信息——技能提升

热门文章

  1. Class文件结构amp;字节码指令
  2. 怪兽级性能,用代码玩转Excel!葡萄城强势发布Spread表格组件
  3. c#调用本地命令并截取Output
  4. mysql导出(导入)数据库window平台
  5. 浅析网络编程之Socket模型
  6. openeim 成片的蝴蝶兰盛开在绿树之间
  7. 飞鸽改变您的互联网生活
  8. 解析Winndows 2000/XP物理内存管理
  9. 北妈每日一题:如何拿到 金条、蛋糕和大钻石
  10. 年底了,小心这些现象。别再无动于衷