{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог об аналитике, визуализации данных, data science и BI, заметки с тегом: cryptocurrency",
    "home_page_url": "http:\/\/test.leftjoin.ru\/tags\/cryptocurrency\/",
    "feed_url": "http:\/\/test.leftjoin.ru\/tags\/cryptocurrency\/json\/",
    "icon": "http:\/\/test.leftjoin.ru\/user\/userpic@2x.jpg",
    "author": {
        "name": "Николай Валиотти",
        "url": "http:\/\/test.leftjoin.ru\/",
        "avatar": "http:\/\/test.leftjoin.ru\/user\/userpic@2x.jpg"
    },
    "items": [
        {
            "id": "132",
            "url": "http:\/\/test.leftjoin.ru\/all\/coingecko-api-parsing\/",
            "title": "Изучаем динамику основных криптовалют и определяем валюты с взрывным ростом",
            "content_html": "<p><img src=\"http:\/\/test.leftjoin.ru\/pictures\/tech-daily-ztYmIQecyH4-unsplash.jpg\" border=\"0\" width=\"100%\" height=\"100%\"><\/a><\/p>\n<p>На финансовых рынках стало крайне нестабильно. Сейчас специалисты по финансам и инвестициям серьезно затрудняются в ответе на вопрос “Куда лучше инвестировать?”. И правда, акции российских компаний (даже “голубые фишки”) больше не внушают доверия. Ответы с точки зрения инвесторов мы вам не дадим, конечно, мы все-таки аналитики. Однако, если вы хотите стать счастливым и успешным обладателем криптовалют, то сегодняшняя статья о том, как проанализировать динамику криптовалют, будет очень кстати.<br \/>\nСегодня мы разберемся в том, как:<\/p>\n<ol start=\"1\">\n<li>найти Tоп-5 криптовалют по объему их капитализации и построить графики динамики стоимости<\/li>\n<li>сравним изменение цены валюты и капитализации криптовалюты за год<\/li>\n<\/ol>\n<h2>Скрипт для обработки данных<\/h2>\n<p class=\"note\">Если вы все же решите парсить отдельно биржу Binance, то помните, что на самой бирже в архивных данных лежат не все периоды и валюты.<\/p>\n<p>Наш скрипт выполнен с помощью <a href=\"https:\/\/www.coingecko.com\/ru\/api\/documentation\">CoinGecko API<\/a>. Этот API усредняет собранные данные с 596 бирж, что помогает избавиться от незначительных колебаний и прочего статистического шума.<br \/>\nМы проверили несколько вариантов получения данных (в т.ч. и парсинг биржи Binance), но именно этот клиент отдает больше всего информации (например, по капитализации криптовалют).<\/p>\n<h3>Подготовка<\/h3>\n<pre class=\"e2-text-code\"><code># импорт библиотек\r\nimport requests\r\nfrom bs4 import BeautifulSoup as bs\r\nimport time\r\nimport pandas as pd\r\nimport urllib.request\r\nimport matplotlib.pyplot as plt<\/code><\/pre><h3>Получаем Топ-5 криптовалют по капитализации<\/h3>\n<pre class=\"e2-text-code\"><code># получаем капитализацию валют через coingecko\r\nr = requests.get(&quot;https:\/\/api.coingecko.com\/api\/v3\/coins\/markets?vs_currency=usd&amp;order=market_cap_desc&amp;per_page=5&amp;page=1&quot;, headers = {'User-Agent':'Mozilla\/5.0'})\r\n \r\nif r.status_code == 200:\r\n  \r\n d = {\r\n     'crypto name':   [i['id'] for i in r.json()],\r\n     'symbol': [i['symbol'].upper() for i in r.json()],\r\n     'capitalization': [i['market_cap'] for i in r.json()]     \r\n   }\r\n      \r\n df_coingecko = pd.DataFrame(d)\r\n\r\ndf_coingecko.head()<\/code><\/pre><p><img src=\"http:\/\/test.leftjoin.ru\/pictures\/image3.png\" border=\"0\" width=\"50%\" height=\"50%\"><\/a><\/p>\n<h3>Динамика изменения стоимости валюты<\/h3>\n<pre class=\"e2-text-code\"><code># получаем динамику стоимости валюты bitcoin в usd за 7 дней\r\nr = requests.get(&quot;https:\/\/api.coingecko.com\/api\/v3\/coins\/bitcoin\/market_chart?vs_currency=usd&amp;days=7&quot;, headers = {'User-Agent':'Mozilla\/5.0'})\r\n \r\nif r.status_code == 200:\r\n d = {\r\n     'datetime':   [i[0] for i in r.json()['prices']],\r\n     'price': [i[1] for i in r.json()['prices']]   \r\n   }\r\n      \r\n df_change = pd.DataFrame(d)<\/code><\/pre><h3>Визуализируем результаты<\/h3>\n<pre class=\"e2-text-code\"><code>df_change['datetime'] = pd.to_datetime(df_change['datetime'],unit='ms')\r\ndf_change.set_index('datetime', inplace=True)\r\ndf_change['price'].plot(title=&quot;Bitcoin price changes&quot;, ylabel=&quot;Price, $&quot;)<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"http:\/\/test.leftjoin.ru\/pictures\/image2-1.png\" width=\"401\" height=\"284\" alt=\"\" \/>\n<\/div>\n<h3>Анализ роста криптовалют за месяц<\/h3>\n<pre class=\"e2-text-code\"><code># получаем данные по 100 монетам с самой большой капитализацией\r\nr = requests.get(&quot;https:\/\/api.coingecko.com\/api\/v3\/coins\/markets?vs_currency=usd&amp;order=market_cap_desc&amp;per_page=100&amp;page=1&amp;price_change_percentage=30d&quot;, headers = {'User-Agent':'Mozilla\/5.0'})\r\n\r\nif r.status_code == 200:\r\n d = {\r\n     'crypto name':   [i['id'] for i in r.json()],\r\n     'symbol': [i['symbol'].upper() for i in r.json()],\r\n     'price_change_percentage_30d_in_currency': [i['price_change_percentage_30d_in_currency'] for i in r.json()]     \r\n   }\r\n df_change = pd.DataFrame(d)\r\n\r\n# сортируем\r\ndf_change.sort_values('price_change_percentage_30d_in_currency', ascending=False, inplace=True)\r\n\r\n# находим 5 валют с максимальным ростом за месяц\r\ndf_change.head()\r\n\r\n# находим 5 валют с максимальным падением за месяц\r\ndf_change.tail()\r\nАнализ роста валют за год (включая изменение капитализации)\r\n# получаем данные по 100 монетам с самой большой капитализацией за год\r\nr = requests.get(&quot;https:\/\/api.coingecko.com\/api\/v3\/coins\/markets?vs_currency=usd&amp;order=market_cap_desc&amp;per_page=100&amp;page=1&amp;price_change_percentage=1y&quot;, headers = {'User-Agent':'Mozilla\/5.0'})\r\n\r\nif r.status_code == 200:\r\n d = {\r\n     'crypto name':   [i['id'] for i in r.json()],\r\n     'symbol': [i['symbol'].upper() for i in r.json()],\r\n     'price_change_percentage_1y_in_currency': [i['price_change_percentage_1y_in_currency'] for i in r.json()]     \r\n   }\r\n df_year_change = pd.DataFrame(d)\r\n df_year_change.sort_values('price_change_percentage_1y_in_currency', ascending=False, inplace=True)<\/code><\/pre><p>Наибольший рост цены за год у валюты Shiba-inu — более 24000 %<\/p>\n<pre class=\"e2-text-code\"><code>plt.rcParams[&quot;figure.figsize&quot;] = (20, 5)\r\n\r\n# получаем данные по изменению за год\r\ndef get_year_charts(name):\r\n r = requests.get(f&quot;https:\/\/api.coingecko.com\/api\/v3\/coins\/{name}\/market_chart?vs_currency=usd&amp;days=365&quot;, headers = {'User-Agent':'Mozilla\/5.0'})\r\n \r\n if r.status_code == 200:\r\n   d = {\r\n       'datetime': [i[0] for i in r.json()['market_caps']],\r\n       'market_cap':   [i[1] for i in r.json()['market_caps']],\r\n       'price': [i[1] for i in r.json()['prices']]\r\n       #'volume': [i[1] for i in r.json()['total_volumes']]     \r\n     }\r\n   df_ydynamic = pd.DataFrame(d)\r\n \r\n   df_ydynamic['datetime'] = pd.to_datetime(df_ydynamic['datetime'],unit='ms')\r\n   df_ydynamic.set_index('datetime', inplace=True)\r\n \r\n   # Рисуем оси - рыночная капитализация (синий цвет по умолчанию) и цена (красный)\r\n   plt.figure()\r\n   ax = df_ydynamic['market_cap'].plot()\r\n   ax.set_ylabel('market_cap')\r\n   ax1 = df_ydynamic['price'].plot(secondary_y=True, style='r')\r\n   ax1.set_ylabel('price')\r\n \r\n    ax.set_title(f&quot;{name.capitalize()} market cap and price changes&quot;)\r\n    h1, l1 = ax.get_legend_handles_labels()\r\n    h2, l2 = ax1.get_legend_handles_labels()\r\n    ax.legend(h1+h2, l1+l2)<\/code><\/pre><p class=\"note\">Обратите внимание на данные по самой быстро выросшей валюте — shiba-inu (SHIB) Есть интересный момент, когда в мае 2021 года цена дала резкий скачок и затем падение, а капитализация практически стояла на одном уровне. И только с середины мая, когда цена уменьшилась после взлета, капитализация стала расти. Возможно, это было связано с <a href=\"https:\/\/www.rbc.ru\/crypto\/news\/60a7915f9a79478469074cc5\">историей с Бутериным<\/a>.<\/p>\n<pre class=\"e2-text-code\"><code>get_year_charts('shiba-inu')<\/code><\/pre><p><img src=\"http:\/\/test.leftjoin.ru\/pictures\/image1-2.png\" border=\"0\" width=\"100%\" height=\"100%\"><\/a><\/p>\n",
            "date_published": "2022-04-05T17:06:23+03:00",
            "date_modified": "2022-04-07T17:26:41+03:00",
            "image": "http:\/\/test.leftjoin.ru\/pictures\/image1-2.png",
            "_date_published_rfc2822": "Tue, 05 Apr 2022 17:06:23 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "132",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "http:\/\/test.leftjoin.ru\/pictures\/image1-2.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/image3.png",
                    "http:\/\/test.leftjoin.ru\/pictures\/image2-1.png"
                ]
            }
        }
    ],
    "_e2_version": 3365,
    "_e2_ua_string": "E2 (v3365; Aegea)"
}