Как собирать и анализировать сетевые данные с помощью Python и API?

Python API Excel продукт

В этой статье в качестве примера используется продукт запросов погоды на рынке Alibaba Cloud, который шаг за шагом знакомит вас с тем, как использовать Python для вызова API для сбора, анализа и визуализации данных. Я надеюсь, что вы сможете извлечь уроки из одного случая и легко справиться с будущими задачами по сбору и анализу данных API.

похожий

В аспирантуре на прошлой неделе студенты были сгруппированы, чтобы представить второе задание практического занятия, которое касалось сбора, анализа и визуализации данных с использованием API.

То, что все делают, действительно разнообразно.

Например, в этой группе объектом исследования является мультфильм «Свинка Пеппа» (английское название «Peppa Pig», также переводится как «Свинка Пеппа»). Говорят, что в последнее время этот фильм очень популярен.

Угадай, что?

Правильно, Игра Престолов. Очень красивая американская драма.

Темы красочные и хорошо сделаны.

Как учитель, я ниже, должен быть очень счастлив?

Нет, я не могу не плакать.

Более половины из 14 групп сделали то же самое, выполняяПросмотры страниц Википедиианализировать.

Почему это так?

Потому что, когда я задавал домашнее задание, я любезно привел пример, который является учебником, который я написал ранее.Как получить веб-данные бесплатно с помощью R и API?".

Поэтому онипросто используйтеЯзык R для анализа просмотров страниц Википедии.

Эти одноклассники слишком ленивы?

Послушав их презентации, я обнаружил, что многие из них действительно хотели сделать что-то новое.

Они нашли несколько облачных рынков в Китае, чтобы найти продукты API.

Среди них API с завышенной ценой автоматически отфильтровывались ими.

Также существует множество недорогих или бесплатных API, подходящих для тренировки рук.

Проблема в том, что они занимают много времени, а такжене могу понять.

Учитывая предстоящий график представления заданий, им пришлось следовать моему руководству и использовать R для анализа Википедии.

Таким образом, несколько наборов назначений одинаковы.

Говоря об этом, они выглядели смущенными.

Но я обнаружил, что здесь есть проблема.

Практически все API-продукты на отечественном облачном рынке имеют богатую документацию. Многие также просто дают соответствующие коды вызова различных языков программирования.

Теперь, когда пример кода готов, почему вы не можете это сделать?

После занятий я попросил студентов, у которых были сомнения, остаться, и пригласил их протестировать продукт API, пытаясь выяснить, из-за чего у них возникли проблемы.

рынок

То, что мы попробовали, было продуктом API от Alibaba Cloud Market, который они нашли, предоставляя данные о погоде.

Это из Yiyuan Data, ссылка наздесь.

Это платный API и цена 1 цент за 100 вызовов.

В качестве домашнего задания достаточно 100 звонков.

Эта цена, они сказали, что это было приемлемо.

Я сам прошел процесс.

Нажмите кнопку «Купить сейчас».

Вы будете перенаправлены на страницу оплаты. Если вы не вошли в систему, вы можете войти в свою учетную запись Taobao, как будет предложено.

После оплаты 1 цента вы увидите следующее сообщение об успехе.

После этого система подскажет вам очень важную информацию.

Обратите внимание на поля, отмеченные красным на изображении выше.

Это ваш AppCode, который является наиболее важным методом аутентификации для вызова интерфейса API для последующего получения данных. Нажмите кнопку "Копировать", чтобы сохранить его.

Щелкните ссылку с названием продукта на изображении выше, чтобы вернуться на страницу с описанием продукта.

Интерфейс API этого продукта предоставляет множество функций сбора данных.

То, что студенты пытались использовать, было пунктом «использование идентификатора или названия места для запроса исторической погоды».

Обратите внимание, что на этом изображении есть несколько важных фрагментов информации:

  • Адрес для вызова: это основная информация для доступа к API. Это как если вы собираетесь встретиться с другом, вы должны знать, где его адрес;
  • Метод запроса: GET в данном примере — одна из основных форм запроса передачи данных по протоколу HTTP;
  • Параметры запроса: здесь вам нужно предоставить интерфейсу API две части информации, одна — «имя региона» или «идентификатор региона» (выберите один из двух), а вторая — данные месяца. Обратите внимание на формат и доступный временной диапазон.

Если мы прокрутим страницу вниз, мы увидим образец запроса.

Пример запроса по умолчанию — самый простой curl.

Если curl уже установлен в вашей операционной системе (если он не установлен, вы можете нажатьэта ссылка, найдите соответствующую версию операционной системы для загрузки и установки), попробуйте скопировать строку кода в начале curl на приведенном выше рисунке и скопировать ее в текстовый редактор.

нравится:

curl -i -k --get --include 'https://ali-weather.showapi.com/weatherhistory?area=%E4%B8%BD%E6%B1%9F&areaid=101291401&month=201601'  -H 'Authorization:APPCODE 你自己的AppCode'

Затем обязательно замените строку «your own AppCode» вашим реальным AppCode.

Скопируйте и вставьте замененный оператор в окно терминала для запуска.

Результат работы показан на следующем рисунке:

Видите данные на китайском внизу окна?

Использование API для получения данных — это так просто.

Если терминал может выполнить команду, зачем нам программировать?

хороший вопрос!

Потому что нужные нам данные могут быть недоступны в одном вызове.

Вам нужно многократно вызывать API, постоянно менять параметры и накапливать данные.

Если команда каждый раз выполняется вручную, эффективность слишком низкая.

Поставщик API предоставит пользователям подробную документацию и инструкции и даже включит образцы.

На приведенном выше рисунке в дополнение к curl, который мы только что использовали, он также включает примеры инструкций для доступа к интерфейсу API на следующих языках:

  • Java
  • C#
  • PHP
  • Python
  • Object C

Давайте возьмем Python в качестве примера и щелкнем вкладку, чтобы увидеть его.

Вам просто нужно скопировать весь пример кода и сохранить его с помощью текстового редактора в виде файла сценария Python с расширением «.py», например demo.py .

Опять же, не забудьте заменить строку «your own AppCode» вашим реальным AppCode и сохранить его.

Под терминалом выполните:

python demo.py

Если вы используете Python версии 2.7, вы сразу же получите правильный результат.

Почему не многие студенты получают результаты?

Я позволил им запустить его и обнаружил, что некоторые студенты были небрежны и забыли заменить свой AppCode.

Однако большинство учащихся столкнулись со следующими проблемами из-за установки последней версии Anaconda (версия Python 3.6):

Вы можете подумать, что это связано с неправильной установкой модуля urllib2, поэтому выполните

pip install urllib2

Вы можете увидеть следующее сообщение об ошибке:

Вы можете попробовать удалить номер версии и просто установить urllib, т.е.:

pip install urllib

Но результат все равно невелик:

Некоторые разработчики Python могут посмеяться над нами, увидев это: в версии Python 3 urllib был разделен! Все на Земле знают, что вы должны...

Пожалуйста, сохраняйте эмпатию.

Подумайте об обычном пользователе, зачем ему разбираться в различиях инструкций между разными версиями Python? Почему вы должны знать решение для преобразования этой версии?

По их мнению, образцы, представленные на официальном сайте, должны работать. Если сообщается об ошибке, и ее нельзя решить, установив «трехходовку» через собственный программный комплекс, это вызовет панику и тревогу.

Идя дальше, они также мало знают о формате JSON.

Хотя JSON уже является очень понятным, человеко-машиночитаемым методом хранения данных.

Они хотят знать, как переместить проблему в диапазон, который они могут решить.

Например, можно ли преобразовать JSON во фрейм данных в Excel?

Если они могут, они могут вызывать знакомые команды Excel для фильтрации данных, анализа и построения графиков.

Они также будут думать, что если Python сам сможет выполнить весь процесс чтения, сортировки, анализа и визуализации данных за одну остановку, это будет лучше.

Но, образец, где образец?

на меня"Программирование на Python сталкивается с проблемами, что делать студентам гуманитарных наук?«В статье я упомянул о важности такого рода примеров для обычных пользователей.

Без "тыквы" как они могли "раскрасить совок по тыкве"?

Так как в этом примере официальная документация не предоставляет такого подробного кода и поясняющих примеров, позвольте мне нарисовать для вас «калебасу».

Ниже я покажу вам шаг за шагом, как вызывать интерфейс API, читать, анализировать данные и рисовать графику под Python 3.

окрестности

Во-первых, давайте взглянем на среду выполнения кода.

Как упоминалось ранее, если рабочая среда примера кода такая же, как ваша локальная рабочая средадругая среда, сам тайм-код тоже в порядкене может выполнить должным образом.

Итак, я создаю для вас среду выполнения облачного кода. (Если вас интересует процесс сборки этой среды выполнения кода, пожалуйста, прочитайте мой "Как запустить код Python с iPad?" статья. )

Пожалуйста, нажмитеэта ссылка(t.cn/R3us4Ao), прямо в нашу экспериментальную среду.

тыненужныйУстановите любой пакет на свой локальный компьютер. Если у вас есть современный браузер (включая Google Chrome, Firefox, Safari, Microsoft Edge и т. Все зависимое ПО, явсе готово для вас.

После перехода по ссылке вы увидите эту страницу.

Этот интерфейс от Jupyter Lab.

Левая колонка на рисунке показывает все файлы в рабочем каталоге.

Справа открыт файл ipynb, который мы хотим использовать.

Согласно моему объяснению, пожалуйста, выполняйте его один за другим и внимательно наблюдайте за результатом.

В этом примере мы в основном будем использовать следующие два новых пакета.

Первый — это так называемые «человеческие» запросы HTTP-инструментария.

Этот инструмент не только соответствует человеческому познанию и привычкам использования, но и более дружелюбен к Python 3. Автор Кеннет Рейц даже призывает всех пользователей Python 2 быстро перейти на версию Python 3.

Использование Python 3 предпочтительнее, чем Python 2. Подумайте об обновлении своих приложений и инфраструктуры, если вы все еще используете Python 2. Если вы используете Python 3, поздравляем — вы действительно человек с отменным вкусом», — Кеннет. Рейц

Один из инструментов рисования, который мы будем использовать, называетсяplotnine.

На самом деле это не инструмент для рисования на платформе Python, а на платформе R.ggplot2пересажен.

Вы знаете, в настоящее время на платформе Python существует ряд отличных пакетов для построения графиков, таких как matplotlib, seaborn, bokeh, plotly и т. д.

Так зачем тратить время и силы на портирование ggplot2?

Потому что автор ggplot2 — известный мастер языка R.Hadley Wickham .

Он создал ggplot2, а не для Rеще один инструмент для рисования, но предоставитьДругой способ рисования.

ggplot2 полностью соответствует и реализуетLeland WilkinsonПредлагаемая «Грамматика рисования» (Грамматика графики), рисование изображений, была разделена от исходных компонентов до иерархического разделения.

Это делает визуализацию данных более простой в освоении и более мощной, чем когда-либо прежде.

Я подробно покажу вам, как использовать эти два пакета в разделе «Код» ниже.

Я предлагаю вам сначалаТочно следуйте инструкцииЗапустите его снова и получите результат.

Если все нормально, то замените данные в нем на своисодержание интереса.

После этого попробуйте открыть пустой файл ipynb, самостоятельно наберите код согласно туториалу и документации и попробуйте внести коррективы.

Это поможет вам понять рабочий процесс и то, как использовать инструмент.

Давайте посмотрим на код ниже.

код

Во-первых, прочитайте запросы HTTP Toolkit.

import requests

Во втором предложении есть слово «Ваш AppCode здесь», пожалуйста, замените его своим AppCode, иначе следующая операция сообщит об ошибке.

appcode = 'Your AppCode here'

Мы пытаемся получить информацию о погоде в Лицзяне в мае.

На информационной странице API есть таблицы для городов и кодов.

Расположение относительно скрыто, над профилем компании.

Я помещаю URL-адрес этого документа Excel вздесь(http://t.cn/R3T7e39), вы можете напрямую щелкнуть, чтобы загрузить.

Скачав файл Excel и открыв его, по запросу таблицы мы знаем, что «101291401» — это код города Лицзян.

мы пишем этоareaidПеременная.

Дата Мы выбираем месяц, в котором была написана эта статья, то есть май 2018 года.

areaid = "101291401"
month = "201805"

Далее мы установим информацию, связанную с вызовом интерфейса API.

Согласно подсказке на информационной странице API, наш URL-адрес для посещения:https://ali-weather.showapi.com/weatherhistory, необходимо ввести два параметра, которые только что были установленыareaidиmonth.

Кроме того, нам необходимо подтвердить свою личность, чтобы доказать, что мы заплатили.

Нажмите на синий "Метод вызова простой аутентификации API (APPCODE)", вы увидите следующий образец страницы.

Кажется, нам нужно добавить AppCode в HTTP-заголовок.

Всю эту информацию пишем по очереди.

url = 'https://ali-weather.showapi.com/weatherhistory'
payload = {'areaid': areaid, 'month': month}
headers = {'Authorization': 'APPCODE {}'.format(appcode)}

Теперь пришло время поработать с пакетом запросов.

Синтаксис запросов очень лаконичен, нужно указать всего 4 вещи:

  • Метод вызова "GET"
  • URL-адрес адреса доступа
  • Параметры, которые необходимо прикрепить к URL, а именно полезная нагрузка (включаяareaidиmonthстоимость)
  • Информация HTTP-заголовка (заголовка), а именно AppCode
r = requests.get(url, params=payload, headers=headers)

После казни вроде... ничего не произошло!

Давайте проверим это:

r

Питон говорит нам:

<Response [200]>

Код возврата «200» означает, что доступ был успешным.

Оглядываясь назад, "Как получить веб-данные бесплатно с помощью R и API?«В статье мы упомянули:

Коды состояния, начинающиеся с 2, являются лучшими результатами, что означает, что все в порядке; если значение состояния начинается с цифры 4 или 5, существует проблема, которую необходимо устранить.

Теперь, когда вызов выполнен успешно, давайте взглянем на конкретное содержимое данных, возвращаемое интерфейсом API.

Вызовите свойство содержимого возвращаемого значения:

r.content

Этот экран плотный.

Многие из этих символов даже не отображаются должным образом. Как это может быть хорошо?

Неважно, со страницы информации об API мы знаем, что возвращаемые данные имеют формат JSON.

Это просто, мы называем пакет json, который поставляется с Python.

import json

Используйте функцию обработки строк (загрузки) пакета json для анализа возвращаемого содержимого и сохранения результата вcontent_json.

content_json = json.loads(r.content)

Взгляниcontent_jsonрезультат:

content_json

Как видите, возвращаемая информация является полной. И китайцы, которые только что не смогли нормально отобразиться, тоже показали истинное лицо Лушаня.

Следующий шаг является критическим.

Мы извлекаем данные, которые нам действительно нужны.

Нам не нужно возвращать в результате код ошибки и т.д.

Нам нужен список с информацией о погоде на каждый день.

Замечено, что данные этой части хранятся в «списке», а «список» хранится в'showapi_res_body' в

Итак, для выбора списка нам нужно указать в нем путь:

content_json['showapi_res_body']['list']

Избыточная информация удаляется, оставляя только нужный нам список.

Однако он недостаточно удобен и гибок для работы со списком.

Мы хотим преобразовать список во фрейм данных. Это значительно упрощает анализ и визуализацию.

Что немаловажно, мы также можем напрямую экспортировать фрейм данных в виде файла Excel, загружать его в знакомую среду Excel и рисовать графики.

Прочитайте в инструменте фрейма данных Python pandas.

import pandas as pd

Мы позволяем Pandas преобразовать список, который мы только что сохранили, во фрейм данных и сохранить его в df.

df = pd.DataFrame(content_json['showapi_res_body']['list'])

Ознакомьтесь с содержанием:

df

В настоящее время формат отображения данных очень аккуратный, и информация понятна с первого взгляда.

На данный момент вы в основном понимаете, как читать данные определенного города и определенного месяца и организовывать их во фрейм данных Pandas.

Однако нам нужно проанализировать, очевидно, что нельзя ограничиваться одним месяцем и одним городом.

Каждый раз, когда вы добавляете набор данных, если вам придется делать это заново, это будет очень трудоемко. И операторов слишком много, и при выполнении неизбежно одно упустит из виду другое, и возникнут ошибки.

Поэтому нам нужно интегрировать операторы кода прямо сейчас, разбить их на модули и сформировать функции.

Таким образом, нам нужно только передавать разные параметры при вызове функции, такие как разные названия городов, месяцы и другую информацию, чтобы получить желаемые результаты.

Объединив приведенные выше операторы, мы определяем полную функцию, которая передает информацию о городе и месяце и получает фрейм данных.

def get_df(areaid, areaname_dict, month, appcode):

    url = 'https://ali-weather.showapi.com/weatherhistory'
    payload = {'areaid': areaid, 'month': month}
    headers = {'Authorization': 'APPCODE {}'.format(appcode)}

    r = requests.get(url, params=payload, headers=headers)

    content_json = json.loads(r.content)

    df = pd.DataFrame(content_json['showapi_res_body']['list'])
    df['areaname'] = areaname_dict[areaid]

    return df

Обратите внимание, что в дополнение к только что использованному оператору мы добавили в функцию входной параметр, а именноareaname_dict.

Это словарь, каждый пункт включает в себя код города и соответствующее название города.

На основе введенного нами кода города функция может автоматически добавить в результирующий фрейм данных столбец, указывающий, какому городу он соответствует.

Когда мы получаем данные из нескольких городов, мы можем сразу увидеть, к какому городу относится строка данных.

И наоборот, если вам показывают только код города, вы скоро будете ослеплены и сбиты с толку.

Однако только вышеуказанная функция недостаточно эффективна.

Ведь нам может понадобиться запросить информацию за несколько месяцев и несколько городов. Если вы каждый раз вызываете вышеупомянутую функцию, это достаточно утомительно.

Итак, давайте напишем ниже еще одну функцию, которая поможет нам автоматизировать грязную работу.

def get_dfs(areaname_dict, months, appcode):
    dfs = []
    for areaid in areaname_dict:
        dfs_times = []
        for month in months:
            temp_df = get_df(areaid, areaname_dict, month, appcode)
            dfs_times.append(temp_df)
        area_df = pd.concat(dfs_times)
        dfs.append(area_df)
    return dfs

Чтобы проиллюстрировать это, входные данные, которые принимает эта функция, включают словарь кодовых названий городов, список месяцев и наш AppCode.

Метод его обработки очень прост, это двойной цикл.

Внешний цикл отвечает за обход всехГород, внутренний цикл проходит все указанныевремяОбъем.

Он возвращает список.

Каждый элемент в списке представляет собой набор данных о погоде для города за определенный период времени (может быть, несколько месяцев).

Давайте попробуем с одним городом и одним месяцем.

Это все еще Лицзян в мае 2018 года.

areaname_dict = {"101291401":"丽江"}
months = ["201805"]

Мы передаем вышеуказанную информацию вget_dfsфункция.

dfs = get_dfs(areaname_dict, months, appcode)

Проверьте результаты:

dfs

Что возвращается, так это список.

Поскольку в списке только один город, мы просто позволим ему вернуть первый элемент.

dfs[0]

На этот раз отображается фрейм данных:

Тест пройден, давайте ковать железо, пока горячо, и читать все данные с начала 2018 года в Тяньцзине, Шанхае и Лицзяне.

Сначала установите город:

areaname_dict = {"101030100":"天津", "101020100":"上海", "101291401":"丽江"}

Чтобы снова установить временной диапазон:

months = ["201801", "201802", "201803", "201804", "201805"]

Давай сделаем это сноваget_dfsфункция.

dfs = get_dfs(areaname_dict, months, appcode)

Оцените результаты на этот раз:

dfs

Результатом остается список.

Каждый пункт в списке соответствует данным о погоде для определенного города с начала 2018 года до момента написания этой статьи в мае.

Предположим, мы хотим всесторонне проанализировать информацию о погоде в нескольких городах, тогда мы можем интегрировать эти кадры данных вместе.

Используемый метод встроен в Pandas.concatфункция.

Он берет список фреймов данных и объединяет каждый из них по вертикальной оси (по умолчанию).

df = pd.concat(dfs)

Взгляните на общий эффект фрейма данных на этом этапе:

df

Вот вступительная часть:

Вот заключительная часть:

3 города, более 4 месяцев данные корректно считываются и интегрируются.

Попробуем проанализировать.

Во-первых, мы должны выяснить, в каком формате находится каждый элемент во фрейме данных:

df.dtypes
aqi                object
aqiInfo            object
aqiLevel           object
max_temperature    object
min_temperature    object
time               object
weather            object
wind_direction     object
wind_power         object
areaname           object
dtype: object

Все столбцы, все согласноobjectобработанный.

Что вызваноobject?

В этом контексте вы можете понимать его как строковый тип.

Однако мы не можем рассматривать их все как строки.

Например, даты следует рассматривать как типы дат, иначе как сделать визуализацию временных рядов?

Если значение AQI рассматривать как строку, как сравнить размер?

Итак, нам нужно преобразовать тип данных.

Сначала преобразуйте столбец даты:

df.time = pd.to_datetime(df.time)

Затем преобразуйте числовой столбец AQI:

df.aqi = pd.to_numeric(df.aqi)

Взгляните на тип данных df на этом этапе:

df.dtypes
aqi                         int64
aqiInfo                    object
aqiLevel                   object
max_temperature            object
min_temperature            object
time               datetime64[ns]
weather                    object
wind_direction             object
wind_power                 object
areaname                   object
dtype: object

На этот раз и дата, и AQI стали теми типами, которые нам нужны. Остальные данные временно оставить прежними.

Некоторые потому, что они должны быть строками, такими как названия городов.

Другие, потому что мы не будем их использовать в настоящее время.

Ниже мы рисуем простой график сравнения временных рядов.

Прочтите в наборе инструментов для построения графиков plotnine .

Обратите внимание, что мы также читаем вdate_breaks, который используется для указания интервала временных меток при построении графика.

import matplotlib.pyplot as plt
%matplotlib inline
from plotnine import *
from mizani.breaks import date_breaks

Формальный рисунок:

(ggplot(df, aes(x='time', y='aqi', color='factor(areaname)')) + geom_line() +
 scale_x_datetime(breaks=date_breaks('2 weeks')) +
 xlab('日期') +
 theme_matplotlib() +
 theme(axis_text_x=element_text(rotation=45, hjust=1)) +
 theme(text=element_text(family='WenQuanYi Micro Hei'))
 )

Мы указываем временные ряды по горизонтальной оси и AQI по вертикальной оси и используем разные цветные линии для различения городов.

При построении графика используйте «2 недели» в качестве периода интервала, чтобы пометить информацию о статистике данных вовремя.

Мы модифицируем горизонтальную ось, помеченную как «дата» на китайском языке.

Поскольку время отображается в течение длительного времени, если используется стиль по умолчанию, оно будет сложено вместе, что некрасиво, поэтому мы поворачиваем его под углом 45 градусов, чтобы избежать перекрытия и быть четким при взгляд.

Для того, чтобы нормально отображать китайский язык на картинке, нам нужно указать китайский шрифт, здесь мы выбираем опенсорсный "Wenquanyi Micron Black".

Результаты визуализации данных показаны на следующем рисунке.

png

Как насчет этой сравнительной картинки, она все еще хорошо нарисована?

Что можно проанализировать по картинке?

Во всяком случае, после того, как я увидел эту картину,Я хочу поехать в Лицзян.

резюме

Надеюсь, после прочтения этого руководства вы овладели следующими знаниями:

  • Как выбрать интересующие вас продукты по подсказкам на облачном рынке API;
  • Как получить информацию для аутентификации AppCode;
  • Как использовать простейший метод curl из командной строки для прямого вызова интерфейса API для получения данных результата;
  • Как использовать Python 3 и более удобные HTTP-инструменты для вызова API для получения данных;
  • Как использовать инструментарий JSON для разбора и обработки полученных строковых данных;
  • Как преобразовать список JSON во фрейм данных с помощью Pandas;
  • Как упаковать простые операторы Python после прохождения теста в функции для многократного вызова для повышения эффективности;
  • Как использовать plotnine (клон ggplot2), чтобы нарисовать линейную диаграмму временных рядов и сравнить исторические тенденции AQI в разных городах;
  • Как запустить этот образец в облачной среде и изменить его самостоятельно.

Я надеюсь, что этот пример кода поможет вам укрепить доверие, попытаться собрать и попробовать получить данные API самостоятельно, а также внести свой вклад в вашу собственную научную работу.

Если вы хотите запустить этот пример локально, а не в облаке, используйтеэта ссылка(t.cn/R3usDi9), чтобы загрузить все архивы исходного кода и файлов конфигурации среды выполнения (Pipenv), используемые в этой статье.

если ты знаешькак использовать гитхаб, также добро пожаловать в использованиеэта ссылка(t.cn/R3usEti) для доступа к соответствующему репозиторию github и выполнения таких операций, как клонирование или разветвление.

Конечно, было бы лучше, если бы вы добавили звездочку в мой репозиторий.

обсуждать

Пробовали ли вы раньше получать данные с помощью Python и API? Какие лучшие программные пакеты вы используете для сбора, обработки, анализа и визуализации данных? Какие еще торговые площадки продуктов данных вы использовали? Добро пожаловать, чтобы оставить сообщение, поделиться своим опытом и мыслями со всеми, мы обменяемся и обсудим вместе.

Лайк пожалуйста лайк. Вы также можете подписаться на мой публичный аккаунт в WeChat и закрепить его."Юшу Жилан" (nkwangshyi).

Если вы интересуетесь наукой о данных, вы можете прочитать мою серию постов с учебными указателями "Как эффективно начать работу с наукой о данных?", есть более интересные задачи и решения.