PythonでCoinMarketCap APIの使い方を分かりやすく解説

こんにちは、はやたす(@hayatasuuu )です。

この記事では「PythonでCoinMarketCap APIを使う方法」を紹介します。

CoinMarketCap APIを使えば、仮想通貨の各種データを取得できます。

今回はその中でも仮想通貨ランキングを取得して、CSVに出力するところまでやっていきます。

目次

PythonでCoinMarketCap APIの使い方を分かりやすく解説

仮想通貨ランキングを取得してCSVに出力するには、以下の3ステップが必要になります。

  1. アカウント作成とAPI Keyの取得
  2. APIを叩いてランキングを取得する
  3. データフレームを作成してCSVに出力する

順番に紹介していきます。

STEP1 : アカウント作成とAPI Keyの取得

まずはCoinMarketCapのアカウントを作成します。

APIの申請ページで「GET YOUR API KEY NOW」をクリックしましょう。

CoinMarketCap API 使い方1

Sign Upページに遷移したら、以下項目を記入しましょう。

CoinMarketCap API 使い方2

CoinMarketCap APIは有料プランもあります。

まあまあ高いのでまずは無料で良いと思います。「Basic」を選択してください。

記入が完了したら「CREATE MY ACCOUNT」をクリックします。

STEP2 : APIを叩いてランキングを取得する

アカウントを作成したらダッシュボードを開いてください。

ここでシークレットになっているAPI Keyをコピーしましょう。

CoinMarketCap API 使い方3

API KeyをコピーしたらPythonを実行できる環境を準備してください。

HTTPリクエストを投げるので、requestsライブラリが必要になります。

もしインストールしていなければ、以下のコマンドでインストールしましょう。

$ pip install requests

requestsをインストールしたら、Pythonファイルを準備して以下のコードを貼り付けてください。

※スクリプトで書いてますが、あとでデータフレームの作成からCSVの出力をおこなうのでJupyter推奨です。

from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects


url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
fiat = 'USD'

API_KEY = '' # Set your api key

headers = {
  'Accepts': 'application/json',
  'X-CMC_PRO_API_KEY': API_KEY,
}

params = {
  'start':'1',
  'limit':'5000',
  'convert':fiat
}

session = Session()
session.headers.update(headers)

try:
  r = session.get(url, params=params)
except (ConnectionError, Timeout, TooManyRedirects) as e:
  print(e)

print(r.json())

エラーにならなければ、CoinMarketCapの仮想通貨ランキングをJSON形式で取得できるはずです。

STEP3 : データフレームを作成してCSVに出力する

JSON形式で取得できましたが、これだとデータ分析するには扱いづらいです。

PythonライブラリのPandasを使って、JSONからデータフレームに変換していきましょう。

続きから以下のコードを書きます。

import pandas as pd

df = pd.DataFrame(r.json()['data'])
df.head()

Jupyter環境で実行すれば、以下のようなデータフレームを作成できるはずです。

CoinMarketCap API 使い方4

これでデータが扱いやすい形になりました。

APIの利用には制限があるので、データフレームを保存しておくと良いですね。

f_name = 'cmc_coinlist.pickle'
df.to_pickle(f_name)

これでいつでもデータ分析できるようになりました。

もちろんto_pickle()to_csv()に変えればCSVファイルを出力できます。

df.to_csv('cmc_coinlist.csv', index=None, encoding='utf-8-sig')

これで、CoinMarketCap APIで取得した「仮想通貨ランキングデータ」を、CSVに出力するまで完了しました。

おまけ : セル内の辞書をアンパックする方法

データフレームを見ると分かりますが、tagsquoteカラムはセル内にリストや辞書を持っています。

CoinMarketCap API 使い方5

これではデータを扱いづらいので、今回はquoteだけバラしてあげたいと思います。

そのためには、少し横暴ですが以下のコードを書けばOKです。

for target_key in df.quote.iloc[0][fiat]:
    df[fiat+'_'+target_key] = df.quote.map(lambda d: d[fiat][target_key])

quote内に格納されている辞書のKeyを一つずつ取り出し、それをデータフレームのカラムとして新しく追加しています。

これに関しては、手元の環境で実行してみるのが早いと思います。

もしセル内の辞書を展開したいと思ったら、こちら使ってみてください。

よかったらシェアしてね!
目次
閉じる