从文件中检索数据
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
)。 - 通过在 Notebook 开头的代码单元格中添加
%use dataframe
来导入 Kotlin DataFrame 库。NOTE
确保在运行任何其他依赖 Kotlin DataFrame 库的代码单元格之前,先运行包含
%use dataframe
的代码单元格。 - 使用 Kotlin DataFrame 库中的
.read()
函数来检索数据。例如,要读取 CSV 文件,请使用:DataFrame.read("example.csv")
。
.read()
函数会根据文件扩展名和内容自动检测输入格式。您还可以添加其他参数来自定义函数,例如使用 delimiter = ';'
指定分隔符。
TIP
有关其他文件格式和各种读取函数的全面概述,请参阅 Kotlin DataFrame 库文档。
显示数据
一旦您在 Notebook 中获得数据,您可以轻松地将其存储在变量中,并通过在代码单元格中运行以下代码来访问它:
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()
函数将数据加载到 Notebook 中。此示例涉及从名为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 DataFrame 库的方法(如 add
、update
和 filter
)在 Kotlin 中有效地精炼和分析数据。
TIP
有关其他用例和详细示例,请参阅 Examples of 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,使其只包含属于“Action”类型的电影:kotlinval actionMoviesDf = moviesDf.filter { genres.equals("Action") }
使用
.remove
从 DataFrame 中删除movieId
列:kotlinval refinedMoviesDf = actionMoviesDf.remove { movieId } refinedMoviesDf
Kotlin DataFrame 库提供了各种写入函数,可以将数据保存为不同格式。在此示例中,使用
.writeJson()
函数将修改后的movies.csv
保存为 JSON 文件:kotlinrefinedMoviesDf.writeJson("movies.json")
使用
.toStandaloneHTML()
函数将 DataFrame 转换为独立的 HTML 表格,并在默认网页浏览器中打开它:kotlinrefinedMoviesDf.toStandaloneHTML(DisplayConfiguration(rowsLimit = null)).openInBrowser()
接下来
- 使用 Kandy 库 探索数据可视化
- 在 Kotlin Notebook 中使用 Kandy 进行数据可视化 中查找有关数据可视化的更多信息
- 有关 Kotlin 中可用于数据科学和分析的工具和资源的广泛概述,请参阅 用于数据分析的 Kotlin 和 Java 库