Получение данных из веб-источников и API
С помощью библиотеки Kotlin DataFrame можно получать и обрабатывать данные из различных веб-источников и API. Она также помогает преобразовывать эти данные для всестороннего анализа и визуализации.
Изучите примеры DataFrame на GitHub.
Перед началом
Создайте новую записную книжку Kotlin Notebook:
Выберите Файл | Создать | Kotlin Notebook.
-
Импортируйте библиотеку Kotlin DataFrame, выполнив следующую команду:
%use dataframe
Чтобы следовать этому руководству, можно также подключить DataFrame как зависимость Gradle или Maven.
Получение данных из API
Для получения данных из API с помощью библиотеки Kotlin DataFrame используется функция .read(). Она аналогична получению данных из файлов, например CSV или JSON. Однако при работе с веб-источниками может потребоваться дополнительное форматирование, чтобы преобразовать необработанные данные API в структурированный формат.
Рассмотрим пример получения данных из YouTube Data API:
-
Безопасно добавьте ключ API в новую ячейку кода. Он необходим для аутентификации запросов к YouTube Data API. Получить ключ API можно на вкладке учетных данных:
val apiKey = "YOUR-API_KEY"
-
Создайте функцию загрузки, которая принимает путь в виде строки и использует функцию
.read()из DataFrame для получения данных из YouTube Data API:fun load(path: String): AnyRow = DataRow.read("https://www.googleapis.com/youtube/v3/$path&key=$apiKey") -
Организуйте полученные данные в строки и обработайте пагинацию YouTube API с помощью
nextPageToken. Это позволит собрать данные с нескольких страниц:fun load(path: String, maxPages: Int): AnyFrame { // Initializes a mutable list to store rows of data. val rows = mutableListOf<AnyRow>() // Sets the initial page path for data loading. var pagePath = path do { // Loads data from the current page path. val row = load(pagePath) // Adds the loaded data as a row to the list. rows.add(row) // Retrieves the token for the next page, if available. val next = row.getValueOrNull<String>("nextPageToken") // Updates the page path for the next iteration, including the new token. pagePath = path + "&pageToken=" + next // Continues loading pages until there's no next page. } while (next != null && rows.size < maxPages) // Concatenates and returns all loaded rows as a DataFrame. return rows.concat() } -
Используйте ранее определенную функцию
load(), чтобы получить данные и создать DataFrame в новой ячейке кода. В этом примере загружаются данные — в данном случае видео, связанные с Kotlin, — не более 50 результатов на странице и не более чем с 5 страниц. Результат сохраняется в переменнойdf:val df = load("search?q=kotlin&maxResults=50&part=snippet", 5) df -
Наконец, извлеките и объедините элементы из DataFrame:
val items = df.items.concat() items
Очистка и уточнение данных
Очистка и уточнение данных — важные этапы подготовки набора данных к анализу. Библиотека Kotlin DataFrame предлагает мощные возможности для решения этих задач. Такие методы, как move, concat, select, parse и join, помогают упорядочивать и преобразовывать данные.
Рассмотрим пример, в котором данные уже получены с помощью YouTube Data API. Цель — очистить и реорганизовать набор данных, подготовив его к углубленному анализу:
-
Для начала можно реорганизовать и очистить данные. Это включает перемещение некоторых столбцов под новые заголовки и удаление ненужных столбцов для большей наглядности:
val videos = items.dropNulls { id.videoId } .select { id.videoId named "id" and snippet } .distinct() videos -
Разбейте идентификаторы на фрагменты и загрузите соответствующую статистику видео. Для этого нужно разделить данные на небольшие группы и получить дополнительные сведения:
val statPages = clean.id.chunked(50).map { val ids = it.joinToString("%2C") load("videos?part=statistics&id=$ids") } statPages -
Объедините полученные статистические данные и выберите нужные столбцы:
val stats = statPages.items.concat().select { id and statistics.all() }.parse() stats -
Объедините существующие очищенные данные с новой статистикой. Так два набора данных будут сведены в единый DataFrame:
val joined = clean.join(stats) joined
Этот пример демонстрирует, как с помощью различных функций Kotlin DataFrame очищать, реорганизовывать и дополнять набор данных. Каждый шаг помогает уточнить данные и сделать их более подходящими для углубленного анализа.
Анализ данных в Kotlin Notebook
После того как вы успешно получили и очистили и уточнили данные с помощью функций из библиотеки Kotlin DataFrame, следующим шагом будет анализ подготовленного набора данных для извлечения значимых выводов.
Особенно полезны такие методы, как groupBy для категоризации данных, sum и maxBy для вычисления сводной статистики, а также sortBy для сортировки данных. Эти инструменты позволяют эффективно выполнять сложные задачи анализа данных.
Рассмотрим пример: с помощью groupBy распределим видео по каналам, с помощью sum вычислим общее количество просмотров для каждой категории, а с помощью maxBy найдем самое новое или самое просматриваемое видео в каждой группе:
-
Упростите доступ к определенным столбцам, создав ссылки на них:
val view by column<Int>()
-
Используйте метод
groupBy, чтобы сгруппировать данные по столбцуchannelи отсортировать их.val channels = joined.groupBy { channel }.sortByCount()В полученной таблице можно интерактивно изучать данные. Нажмите на поле
groupв строке канала, чтобы развернуть эту строку и просмотреть дополнительные сведения о видео канала.
Чтобы вернуться к сгруппированному набору данных, нажмите значок таблицы в левом нижнем углу.

-
Используйте
aggregate,sum,maxByиflatten, чтобы создать DataFrame со сводкой по общему количеству просмотров каждого канала и сведениями о его самом новом или самом просматриваемом видео:val aggregated = channels.aggregate { viewCount.sum() into view val last = maxBy { publishedAt } last.title into "last title" last.publishedAt into "time" last.viewCount into "viewCount" // Sorts the DataFrame in descending order by view count and transform it into a flat structure. }.sortByDesc(view).flatten() aggregated
Результаты анализа:

Дополнительные сведения о продвинутых методах см. в документации Kotlin DataFrame.
Что дальше
Изучите визуализацию данных с помощью библиотеки Kandy
Дополнительные сведения о визуализации данных см. в разделе Визуализация данных с помощью Kandy
Подробный обзор инструментов и ресурсов для анализа и обработки данных в Kotlin см. в разделе Библиотеки Kotlin и Java для анализа данных
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/data-analysis-work-with-api.html