Kaggle 上的比特币链上数据集 - 使用 Google Big Query API 处理比特币数据(一)

Kaggle 简介

Kaggle 是一个数据竞赛平台,2010 年创立,2017 年被谷歌收购。平台提供大量开放的数据集和免费的计算资源。只需要注册一个帐号就可以在线编写代码,分析数据。

Big Query 比特币数据集

数据集首页 https://www.kaggle.com/bigque...

目前有 700 多个 Kernels。介绍中说数据持续更新,目前来看更新到 2018 年 9 月。

比特币链上数据大小超过百 GB。在这里是通过 Google Big Query API 访问,而没有任何数据文件。所以这个数据集只能在线使用,而不能下载,但它们提供了数据抽取的代码(https://github.com/blockchain...),所以可以选择自己在本地创建这部分数据。据文档介绍,每个账户每月访问数据的上限是 5 TB。

数据一共有 4 张表:blocks、inputs、outputs、transactions。

一个例子

代码来自这里,有改动(原代码由于库版本变化,无法执行),还略去一些次要内容。

查询每日接收比特币地址数量

from google.cloud import bigquery
import pandas as pd

client = bigquery.Client()

# Query by Allen Day, GooglCloud Developer Advocate (https://medium.com/@allenday)
query = """
#standardSQL
SELECT
  o.day,
  COUNT(DISTINCT(o.output_key)) AS recipients
FROM (
  SELECT
    TIMESTAMP_MILLIS((timestamp - MOD(timestamp,
          86400000))) AS day,
    output.output_pubkey_base58 AS output_key
  FROM
    `bigquery-public-data.bitcoin_blockchain.transactions`,
    UNNEST(outputs) AS output ) AS o
GROUP BY
  day
ORDER BY
  day
"""

query_job = client.query(query)

iterator = query_job.result(timeout=30)
rows = list(iterator)

# Transform the rows into a nice pandas dataframe
transactions = pd.DataFrame(data=[list(x.values()) for x in rows], columns=list(rows[0].keys()))

# Look at the first 10 headlines
transactions.head(10)

输出:

前 10 条记录

transactions.tail(10)

输出:

最后 10 条记录

画图

import matplotlib
from matplotlib import pyplot as plt
%matplotlib inline
plt.plot(transactions['day'], transactions['recipients'])

每日接收比特币地址数量

本系列下一篇文章:用 SQL 获取 bigquery 比特币数据 - 使用 Google Big Query API 处理比特币数据(二)

欢迎来我的博客: https://codeplot.top/
我的博客比特币分类

你可能感兴趣的:(Kaggle 上的比特币链上数据集 - 使用 Google Big Query API 处理比特币数据(一))