ファイルからデータを取得する
Kotlin Notebookは、Kotlin DataFrameライブラリと組み合わせることで、非構造化データと構造化データの両方を扱えるようになります。この組み合わせにより、TXTファイルのような非構造化データを構造化データセットに変換する柔軟性が得られます。
データ変換には、add
、split
、convert
、parse
などのメソッドを使用できます。さらに、このツールセットを使用すると、CSV、JSON、XLS、XLSX、Apache Arrowなど、さまざまな構造化ファイル形式からデータを取得および操作できます。
このガイドでは、複数の例を通して、データの取得、整形、処理の方法を学ぶことができます。
開始する前に
Kotlin Notebookは、Kotlin Notebookプラグインに依存しており、このプラグインはIntelliJ IDEAにデフォルトでバンドルされ、有効化されています。
Kotlin Notebookの機能が利用できない場合は、プラグインが有効になっていることを確認してください。詳細については、環境をセットアップするを参照してください。
新しいKotlin Notebookを作成する:
File | New | Kotlin Notebook を選択します。
Kotlin Notebookで、次のコマンドを実行してKotlin DataFrameライブラリをインポートします:
kotlin%use dataframe
ファイルからデータを取得する
Kotlin Notebookでファイルからデータを取得するには:
Kotlin Notebookファイル(
.ipynb
)を開きます。ノートブックの先頭にあるコードセルに
%use dataframe
を追加して、Kotlin DataFrameライブラリをインポートします。%use dataframe
の行があるコードセルは、Kotlin DataFrameライブラリに依存する他のコードセルを実行する前に必ず実行してください。Kotlin DataFrameライブラリの
.read()
関数を使用してデータを取得します。たとえば、CSVファイルを読み込むにはDataFrame.read("example.csv")
を使用します。
.read()
関数は、ファイル拡張子とコンテンツに基づいて入力形式を自動的に検出します。また、delimiter = ';'
で区切り文字を指定するなど、関数をカスタマイズするための他の引数を追加することもできます。
追加のファイル形式とさまざまな読み込み関数の詳細については、Kotlin DataFrameライブラリのドキュメントを参照してください。
データを表示する
ノートブックにデータを取り込んだら、次のコードセルを実行することで、簡単に変数に保存してアクセスできます:
val dfJson = DataFrame.read("jsonFile.json")
dfJson
このコードは、CSV、JSON、XLS、XLSX、Apache Arrowなど、選択したファイルからデータを表示します。
データの構造またはスキーマを把握するには、DataFrame変数に .schema()
関数を適用します。たとえば、dfJson.schema()
はJSONデータセット内の各列の型をリスト表示します。
Kotlin Notebookのオートコンプリート機能を使用すると、DataFrameのプロパティに素早くアクセスして操作できます。データをロードした後、DataFrame変数の後にドットを入力するだけで、利用可能な列とその型の一覧が表示されます。
データを整形する
Kotlin DataFrameライブラリでデータセットを整形するために利用できるさまざまな操作の中でも、主な例としてグルーピング、フィルタリング、更新、新しい列の追加があります。これらの関数はデータ分析に不可欠であり、データを効果的に整理、クリーンアップ、変換するのに役立ちます。
データに映画のタイトルと対応する公開年が同じセルに含まれている例を見てみましょう。目標は、このデータセットを分析しやすくするために整形することです。
.read()
関数を使用してデータをノートブックにロードします。この例では、movies.csv
という名前のCSVファイルからデータを読み込み、movies
というDataFrameを作成します。kotlinval movies = DataFrame.read("movies.csv")
正規表現を使用して映画のタイトルから公開年を抽出し、新しい列として追加します。
kotlinval moviesWithYear = movies .add("year") { "\\d{4}".toRegex() .findAll(title) .lastOrNull() ?.value ?.toInt() ?: -1 }
各タイトルから公開年を削除して、映画のタイトルを変更します。これにより、タイトルが整形され、一貫性が保たれます。
kotlinval moviesTitle = moviesWithYear .update("title") { "\\s*\\(\\d{4}\\)\\s*$".toRegex().replace(title, "") }
filter
メソッドを使用して特定のデータに焦点を当てます。この場合、データセットは1996年以降に公開された映画に絞り込まれます。kotlinval moviesNew = moviesWithYear.filter { year >= 1996 } moviesNew
比較のために、整形前のデータセットを次に示します。
整形されたデータセット:
これは、Kotlinでデータを効果的に整形および分析するために、Kotlin DataFrameライブラリの add
、update
、filter
などのメソッドをどのように使用できるかを示す実用的なデモンストレーションです。
追加のユースケースと詳細な例については、Kotlin Dataframeの例を参照してください。
DataFrameを保存する
Kotlin DataFrameライブラリを使用してKotlin Notebookでデータを整形した後、処理済みのデータを簡単にエクスポートできます。この目的のために、さまざまな.write()
関数を利用できます。これらは、CSV、JSON、XLS、XLSX、Apache Arrow、さらにはHTMLテーブルなど、複数の形式での保存をサポートしています。これは、調査結果の共有、レポートの作成、またはさらなる分析のためにデータを利用可能にするのに特に役立ちます。
DataFrameをフィルタリングし、列を削除し、整形されたデータをJSONファイルに保存し、HTMLテーブルをブラウザで開く方法を次に示します。
Kotlin Notebookで、
.read()
関数を使用してmovies.csv
という名前のファイルをmoviesDf
という名前のDataFrameにロードします。kotlinval moviesDf = DataFrame.read("movies.csv")
.filter
メソッドを使用して、DataFrameを「アクション」ジャンルに属する映画のみにフィルタリングします。kotlinval actionMoviesDf = moviesDf.filter { genres.equals("Action") }
.remove
を使用してDataFrameからmovieId
列を削除します。kotlinval refinedMoviesDf = actionMoviesDf.remove { movieId } refinedMoviesDf
Kotlin DataFrameライブラリは、さまざまな形式でデータを保存するためのさまざまな書き込み関数を提供します。この例では、変更された
movies.csv
をJSONファイルとして保存するために、.writeJson()
関数が使用されます。kotlinrefinedMoviesDf.writeJson("movies.json")
.toStandaloneHTML()
関数を使用してDataFrameをスタンドアロンHTMLテーブルに変換し、デフォルトのWebブラウザで開きます。kotlinrefinedMoviesDf.toStandaloneHTML(DisplayConfiguration(rowsLimit = null)).openInBrowser()
次のステップ
- Kandyライブラリを使用してデータ視覚化を探索する
- Kandyを使用したKotlin Notebookでのデータ視覚化でデータ視覚化に関する追加情報を見つける
- Kotlinにおけるデータサイエンスと分析に利用できるツールとリソースの広範な概要については、KotlinおよびJavaのデータ分析用ライブラリを参照してください。