ウェブソースとAPIからデータを取得する
Kotlin Notebookは、様々なウェブソースやAPIからデータにアクセスし、操作するための強力なプラットフォームを提供します。 各ステップを可視化して明確にするための反復的な環境を提供することで、データ抽出と分析のタスクを簡素化します。これにより、慣れていないAPIを探索する際に特に役立ちます。
Kotlin DataFrameライブラリと組み合わせて使用すると、Kotlin NotebookはAPIへの接続やJSONデータの取得を可能にするだけでなく、包括的な分析と視覚化のためにこのデータを整形するのにも役立ちます。
Kotlin Notebookの例については、GitHubのDataFrameの例を参照してください。
始める前に
Kotlin NotebookはKotlin Notebookプラグインに依存しており、このプラグインはIntelliJ IDEAにデフォルトでバンドルされ、有効になっています。
Kotlin Notebookの機能が利用できない場合は、プラグインが有効になっていることを確認してください。詳細については、環境のセットアップを参照してください。
新しいKotlin Notebookを作成するには:
File | New | Kotlin Notebook を選択します。
Kotlin Notebookで、以下のコマンドを実行してKotlin DataFrameライブラリをインポートします。
kotlin%use dataframe
APIからデータを取得する
Kotlin NotebookとKotlin DataFrameライブラリを使用してAPIからデータを取得するには、.read()関数を使用します。これは、CSVやJSONなどのファイルからデータを取得するのと似ています。ただし、ウェブベースのソースを扱う場合、生APIデータを構造化された形式に変換するために、追加のフォーマットが必要になる場合があります。
YouTube Data APIからデータを取得する例を見てみましょう。
Kotlin Notebookファイル(
.ipynb)を開きます。データ操作タスクに不可欠なKotlin DataFrameライブラリをインポートします。これはコードセルで以下のコマンドを実行して行います。
kotlin%use dataframeYouTube Data APIへのリクエストを認証するために必要なAPIキーを新しいコードセルに安全に追加します。APIキーは認証情報タブから取得できます。
kotlinval apiKey = "YOUR-API_KEY"パスを文字列として受け取り、DataFrameの
.read()関数を使用してYouTube Data APIからデータを取得するロード関数を作成します。kotlinfun load(path: String): AnyRow = DataRow.read("https://www.googleapis.com/youtube/v3/$path&key=$apiKey")取得したデータを各行に整理し、YouTube APIのページネーションを
nextPageTokenで処理します。これにより、複数のページにわたってデータを収集できます。kotlinfun load(path: String, maxPages: Int): AnyFrame { // データ行を格納するためのミュータブルリストを初期化します。 val rows = mutableListOf<AnyRow>() // データの読み込みのための初期ページパスを設定します。 var pagePath = path do { // 現在のページパスからデータを読み込みます。 val row = load(pagePath) // 読み込まれたデータをリストに行として追加します。 rows.add(row) // 次のページのトークンがあれば取得します。 val next = row.getValueOrNull<String>("nextPageToken") // 新しいトークンを含めて、次のイテレーションのためのページパスを更新します。 pagePath = path + "&pageToken=" + next // 次のページがなくなるまでページの読み込みを続けます。 } while (next != null && rows.size < maxPages) // 読み込まれたすべての行を連結し、DataFrameとして返します。 return rows.concat() }以前に定義した
load()関数を使用してデータを取得し、新しいコードセルにDataFrameを作成します。この例では、Kotlinに関連するデータ、この場合は動画を、1ページあたり最大50件、最大5ページまで取得します。結果はdf変数に格納されます。kotlinval df = load("search?q=kotlin&maxResults=50&part=snippet", 5) df最後に、DataFrameからアイテムを抽出し、連結します。
kotlinval items = df.items.concat() items
データのクリーンアップと整形
データのクリーンアップと整形は、分析のためにデータセットを準備する上で非常に重要なステップです。Kotlin DataFrameライブラリは、これらのタスクに強力な機能を提供します。move、concat、select、parse、joinなどのメソッドは、データの整理と変換に役立ちます。
データがすでにYouTubeのData APIを使用して取得されている例を見てみましょう。目標は、詳細な分析のためにデータセットをクリーンアップし、再構築することです。
データを再編成し、クリーンアップすることから始められます。これには、特定の列を新しいヘッダーの下に移動したり、明確にするために不要な列を削除したりすることが含まれます。
kotlinval videos = items.dropNulls { id.videoId } .select { id.videoId named "id" and snippet } .distinct() videosクリーンアップされたデータからチャンクIDを抽出し、対応する動画の統計情報をロードします。これには、データをより小さなバッチに分割し、追加の詳細情報を取得することが含まれます。
kotlinval statPages = clean.id.chunked(50).map { val ids = it.joinToString("%2C") load("videos?part=statistics&id=$ids") } statPages取得した統計情報を連結し、関連する列を選択します。
kotlinval stats = statPages.items.concat().select { id and statistics.all() }.parse() stats既存のクリーンアップされたデータを新しく取得した統計情報と結合します。これにより、2つのデータセットが包括的なDataFrameにマージされます。
kotlinval joined = clean.join(stats) joined
この例は、Kotlin DataFrameの様々な関数を使用してデータセットをクリーンアップ、再編成、および強化する方法を示しています。各ステップは、データを洗練し、詳細な分析により適したものにするように設計されています。
Kotlin Notebookでデータを分析する
データを正常に取得し、クリーンアップおよび整形した後、Kotlin DataFrameライブラリの関数を使用して、次のステップは、準備されたデータセットを分析して意味のある洞察を抽出することです。
データの分類にはgroupBy、要約統計量の計算にはsumやmaxBy、データの順序付けにはsortByといったメソッドが特に役立ちます。これらのツールを使用すると、複雑なデータ分析タスクを効率的に実行できます。
groupByを使用して動画をチャンネル別に分類し、sumを使用してカテゴリごとの総視聴回数を計算し、maxByを使用して各グループで最新または最も視聴された動画を見つける例を見てみましょう。
参照を設定することで、特定の列へのアクセスを簡素化します。
kotlinval view by column<Int>()groupByメソッドを使用して、channel列でデータをグループ化し、ソートします。kotlinval channels = joined.groupBy { channel }.sortByCount()
結果のテーブルでは、データをインタラクティブに探索できます。チャンネルに対応する行のgroupフィールドをクリックすると、その行が展開され、そのチャンネルの動画に関する詳細が表示されます。

左下のテーブルアイコンをクリックすると、グループ化されたデータセットに戻ることができます。

aggregate、sum、maxBy、flattenを使用して、各チャンネルの総視聴回数とその最新または最も視聴された動画の詳細をまとめたDataFrameを作成します。kotlinval aggregated = channels.aggregate { viewCount.sum() into view val last = maxBy { publishedAt } last.title into "last title" last.publishedAt into "time" last.viewCount into "viewCount" // DataFrameを視聴回数の降順でソートし、フラットな構造に変換します。 }.sortByDesc(view).flatten() aggregated
分析結果:

より高度なテクニックについては、Kotlin DataFrameのドキュメントを参照してください。
次に行うこと
- Kandyライブラリを使用したデータ視覚化を探索する
- Kandyを使用したKotlin Notebookでのデータ視覚化でデータ視覚化に関する追加情報を見つける
- Kotlinでデータサイエンスと分析に利用できるツールとリソースの広範な概要については、データ分析のためのKotlinおよびJavaライブラリを参照してください
