CoinGecko APIを使って銘柄ごとのカテゴリを取得する

Hapix
3 years ago
CoinGecko
暗号資産の価格や情報を網羅的にみることができるwebサイト。2021年12月18日現在登録されている銘柄は11786個とめちゃくちゃ増えてます。なんらか分類したいところです。そこでCoinGeckoのつけているカテゴリ情報があるので、それを取得し、分類してみます。
実行環境
- Ubuntu20.04 / WSL2 / Windows 10
- Python3.8
APIドキュメント
各資産のカテゴリ情報を取得する
全データはかなり時間かかるのでとりあえず時価総額上位1000データに絞ります。
import time
import pandas as pd
from pycoingecko import CoinGeckoAPI
cg = CoinGeckoAPI()
coins = []
for i in range(10):
coins += cg.get_coins_markets(vs_currency='usd',page=i+1)
time.sleep(1.2)
# コインのapi用のidとsymbolを取り出す
ids_1000 = [coin['id'] for coin in coins]
symbols_1000 = [coin['symbol'].upper() for coin in coins]
# category を取得する
categories = cg.get_coins_categories_list()
# コインのカテゴリリストをダウンロードしてデータフレームにする
df = pd.DataFrame(index=[c['category_id'] for c in categories])
for i, symbol_id in enumerate(ids_1000):
# coinの詳細情報を取得する
coin_info = cg.get_coin_by_id(symbol_id, localization=False, tickers=False, market_data=False)
tmp = []
for c_name in categories:
if c_name['name'] in coin_info['categories']:
tmp.append(1)
else:
tmp.append(0)
df[symbol_id] = tmp
time.sleep(1.3)
if i%10 == 0:
print(i/len(ids_1000))
# idはわかりにくいのでsymbolに変更
symbols_1000 = [coin['symbol'].upper() for coin in coins]
df.columns = symbols_1000
# ただsymbolだとマイナーな銘柄がたまに重複するので重複除く
df = df.loc[:,~df.columns.duplicated()]
# 保存する
df.to_pickle('cmc1000_category_feature_df.pkl')
こんな感じで各銘柄のカテゴリを取得できます。
コメント
いいね
投げ銭
最新順
人気順

Hapix
3 years ago
コメント
いいね
投げ銭
最新順
人気順