def get_top_volume_coins(): """Scrapes top coins by trading volume "https://www.coingecko.com/en/coins/high_volume" Returns ------- pandas.DataFrame rank, name, symbol, price, change_1h, change_24h, change_7d, volume_24h, market_cap """ columns = [ COLUMNS["rank"], COLUMNS["name"], COLUMNS["symbol"], COLUMNS["price"], COLUMNS["change_1h"], COLUMNS["change_24h"], COLUMNS["change_7d"], COLUMNS["volume_24h"], COLUMNS["market_cap"], ] url = "https://www.coingecko.com/en/coins/high_volume" rows = scrape_gecko_data(url).find("tbody").find_all("tr") results = [] for row in rows: row_cleaned = clean_row(row) if len(row_cleaned) == 9: row_cleaned.insert(0, "?") row_cleaned.pop(3) results.append(row_cleaned) df = replace_qm(pd.DataFrame(results, columns=columns)) df.drop("rank", axis=1, inplace=True) create_df_index(df, "rank") return df
def get_indexes(): """Get list of crypto indexes from CoinGecko API Returns ------- pandas.DataFrame name, id, market, last, is_multi_asset_composite """ df = pd.DataFrame(client.get_indexes(per_page=250)) create_df_index(df, "rank") return df
def get_stable_coins(): """Scrapes stable coins data from "https://www.coingecko.com/en/stablecoins" Returns ------- pandas.DataFrame rank, name, symbol, price, change_24h, exchanges, market_cap, change_30, url """ columns = [ COLUMNS["rank"], COLUMNS["name"], COLUMNS["symbol"], COLUMNS["price"], COLUMNS["change_24h"], COLUMNS["exchanges"], COLUMNS["market_cap"], COLUMNS["change_30d"], COLUMNS["url"], ] url = "https://www.coingecko.com/en/stablecoins" rows = scrape_gecko_data(url).find("tbody").find_all("tr") results = [] for row in rows: link = GECKO_BASE_URL + row.find("a")["href"] row_cleaned = clean_row(row) if len(row_cleaned) == 8: row_cleaned.append(None) ( rank, name, *symbols, price, volume_24h, exchanges, market_cap, change_30d, ) = row_cleaned symbol = symbols[0] if symbols else symbols results.append([ rank, name, symbol, price, volume_24h, exchanges, market_cap, change_30d, link, ]) df = replace_qm(pd.DataFrame(results, columns=columns)) df.drop("rank", axis=1, inplace=True) create_df_index(df, "rank") return df
def get_exchange_rates(): """Get list of crypto, fiats, commodity exchange rates from CoinGecko API Returns ------- pandas.DataFrame index, name, unit, value, type """ df = pd.DataFrame(client.get_exchange_rates()["rates"]).T.reset_index() df.drop("index", axis=1, inplace=True) create_df_index(df, "index") return df
def get_financial_platforms(): """Get list of financial platforms from CoinGecko API Returns ------- pandas.DataFrame rank, name, category, centralized, website_url """ df = pd.DataFrame(client.get_finance_platforms()) df.drop("facts", axis=1, inplace=True) create_df_index(df, "rank") return df
def get_derivatives(): """Get list of crypto derivatives from CoinGecko API Returns ------- pandas.DataFrame market, symbol, price, pct_change_24h, contract_type, basis, spread, funding_rate, volume_24h """ df = pd.DataFrame(client.get_derivatives(include_tickers="unexpired")) df.drop( ["index", "last_traded_at", "expired_at", "index_id", "open_interest"], axis=1, inplace=True, ) df.rename(columns={"price_percentage_change_24h": "pct_change_24h"}, inplace=True) create_df_index(df, "rank") return df
def get_finance_products(): """Get list of financial products from CoinGecko API Returns ------- pandas.DataFrame rank, platform, identifier, supply_rate_percentage, borrow_rate_percentage """ df = pd.DataFrame( client.get_finance_products(per_page=250), columns=[ "platform", "identifier", "supply_rate_percentage", "borrow_rate_percentage", ], ) create_df_index(df, "rank") return df
def get_exchanges(): """Get list of top exchanges from CoinGecko API Returns ------- pandas.DataFrame trust_score, id, name, country, year_established, trade_volume_24h_btc, url """ df = pd.DataFrame(client.get_exchanges_list(per_page=250)) df.replace({float(np.NaN): None}, inplace=True) df = df[[ "trust_score", COLUMNS["id"], COLUMNS["name"], COLUMNS["country"], "year_established", "trade_volume_24h_btc", COLUMNS["url"], ]] create_df_index(df, "rank") return df