IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> python获取比特币价格时间序列数组并绘制蜡烛图(candlestick chart) -> 正文阅读

[区块链]python获取比特币价格时间序列数组并绘制蜡烛图(candlestick chart)

作者:recommend-item-box type_blog clearfix

一、准备工作

使用到的包:

  • pandas包
  • pycoingecko包,用于获取coin数据
  • plotly包:用于绘图

除plotly之外,可以用mplfinance绘制蜡烛图。

#安装上述需要用到的包
! pip install pycoingecko
! pip install plotly

备注:实际场景下一般会一次性导入所需要的包,但因为本文旨在一步步拆解分析代码,所以本文代码选择在调用包的前一刻才导入包,从而更明确该包在代码中的实际用途。

二、获取比特币数据

from pycoingecko import CoinGeckoAPI
cg = CoinGeckoAPI()

#获取bitcoin过去60天的价格数据,币种为美元
bitcoin_data = cg.get_coin_market_chart_by_id(id = 'bitcoin', vs_currency = 'usd', days = 60)

查看bitcoin_data的数据情况

#查看数据结构,是字典结构
type(bitcoin_data)

#查看字典里包含的键名
bitcoin_data.keys()

运行结果:

dict_keys(['prices', 'market_caps', 'total_volumes'])

查看bitcoin_data中价格数据的情况

#查看'prices'数据情况,展示前5行数据
bitcoin_data['prices'][0:5]

运行结果:

 [[1624849233939, 34477.195054010124],  
  [1624852839980, 34547.50190473982],  
  [1624856467010, 34429.27367816914],  
  [1624860069521, 34533.512705287736],  
  [1624863623049, 34534.68096374058]]

将价格数据变成dataframe格式,便于处理

#将价格数据变成dataframe格式,便于处理
import pandas as pd
data = pd.DataFrame(bitcoin_data['prices'], columns = ['Timestamp', 'Prices'])

查看一下转换后的数据情况

#查看前五行数据
data.head()

运行结果:

TimestampPrices
0162484923393934477.195054
1162485283998034547.501905
2162485646701034429.273678
3162486006952134533.512705
4162486362304934534.680964

从上面数据中可以看出,Timestamp数据格式需要调整成便于理解的时间日期格式

#使用pandas包中的to_datetime功能,将Timestamp数据格式调整为便于阅读的时间格式(datetime)
#将unit(即展示精度)设置为微秒
data['Date'] = pd.to_datetime(data['Timestamp'],unit = 'ms')

#另一种调整方法
#data['date'] = data['TimeStamp'].apply(lambda d: datetime.date.fromtimestamp(d/1000.0))

查看一下调整日期后的数据(新增了Date列)

data.head()

运行结果:

TimestampPricesDate
0162484923393934477.1950542021-06-28 03:00:33.939
1162485283998034547.5019052021-06-28 04:00:39.980
2162485646701034429.2736782021-06-28 05:01:07.010
3162486006952134533.5127052021-06-28 06:01:09.521
4162486362304934534.6809642021-06-28 07:00:23.049

三、绘制蜡烛图(candlestick chart)

(一)蜡烛图的简介

candlestick图按照时间序列,展示当日最大值、最小值、第一个值和最后一个值,常见于时间序列数据分析,比如股票分析等。具体示例如下:

Example Candlestick Graph

candlestick图中每个candlestick的含义:

  • 绿色代表当日价格上涨,收盘价在上,开盘价在下,说明收盘价高于开盘价;
  • 红色代表当日价格下跌,收盘价在下,开盘价在上,说明开盘价高于收盘价。
Candle Stick Definition

(二)绘图

创建candlestick图,用于展示数据情况

#将数据按照日期进行分组,获取当日价格的最大、最小、首个和最后一个值。
#dt.date()函数表示获取datetime对象对应的date对象,应用到此处data.Date.dt.date,表示获取Date字段里的日期值
candlestick_data = data.groupby(data.Date.dt.date).agg({'Prices':['min','max','first','last']})

查看一下分组后的数据情况

#查看前五行数据
candlestick_data.head()

运行结果

Prices
minmaxfirstlast
Date
2021-06-2834152.18049035171.13494334477.19505434457.402932
2021-06-2934397.35580936412.01247634556.84212736189.095578
2021-06-3034252.39298836029.85103135968.99366834799.292228
2021-07-0133056.06985035171.48630535171.48630533681.582285
2021-07-0232848.17762433788.20726833655.70045033788.207268

导入绘图用的包

#导入画图使用的包
import plotly.graph_objects as go

绘制candlestick图时需要注意,因为data[‘Date’]列是index列,所以设置x轴的时候不能写 x=candlestick_data[‘date’],而是写 x=candlestick_data.index

#绘制candlestick图
fig = go.Figure(data=[go.Candlestick(x=candlestick_data.index,
                open=candlestick_data['Prices']['first'], 
                high=candlestick_data['Prices']['max'],
                low=candlestick_data['Prices']['min'], 
                close=candlestick_data['Prices']['last'])
                ])

#设置图片的标题、x轴和y轴坐标
fig.update_layout(xaxis_rangeslider_visible=False, xaxis_title = '日期', yaxis_title = '价格(USD$)', title = 'Bitcoin过去30天价格变化情况-candlestick图')

#在新的页面打开图
plot(fig, filename = 'bitcoin_candlestick_graph.html')

#在本代码下方展示图
fig.show()

运行结果:
在这里插入图片描述

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:23:38  更:2021-08-28 09:23:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 11:57:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码