Ecosystem IntelliJ IDEA

使用 Kotlin Notebook、DataFrame 和 Kandy 分析数据

Read this post in other languages:

以交互式方式探索和直观呈现数据,用户能够找出静态分析可能无法立即展现的隐藏模式、趋势和关系。 这种即时反馈让用户可以快速验证假设、识别异常值或异常情况,并调整分析。

Kotlin Notebook 是用于在 IntelliJ IDEA 中探索数据的便捷工具。 它使用 Kotlin 内核在单元中执行 Kotlin 代码的片段,然后在编辑器中呈现数据。 它集成了多种库来简化数据分析,例如用于数据处理的 Kotlin DataFrame 和用于图表创建的 Kandy

最近,Roman 和 Anton 探索了数据分析工具的威力(直播录像)。 在这篇博文中,我们添加了直播中的示例,让您可以方便地使用 DataFrame 和 Kandy 库尝试 Kotlin Notebook 插件。

您可以使用我们为您准备的项目探索 GitHub 仓库。 项目包含直播期间使用的 CSV 文件,您可以由此尝试重建演示的示例。

开始使用 Kotlin Notebook

要开始使用 Kotlin Notebook,您只需转到 IntelliJ IDEA Ultimate 中的 Settings | Plugins(设置 | 插件)标签页并从 JetBrains Marketplace 安装插件。 安装插件后,您就可以使用 New | Kotlin Notebook(新建 | Kotlin Notebook)操作创建您的第一个 Notebook:

创建后,Notebook 将包含一个空单元。 单元是 Notebook 的主要组件,可以包含代码或文本。 要运行代码单元,请点击 Run(运行)按钮或使用 Ctrl+Enter 快捷键。 代码将被执行,输出或错误将在单元下方显示。

您可以增量执行单元,这样先前执行的单元所做的计算无需重新运行即可使用。 这篇博文介绍了 Kotlin Notebook 的基础知识。

使用 DataFrame 读取和探索数据

我们从 Notebook 开始,看一看如何使用 DataFrame 库分析数据。 数据源是这个 CSV 文件,其中包含在阿姆斯特丹地区收集的天气信息。

将 CSV 文件从 Project(项目)视图拖放到 Notebook 单元中。 Notebook 会自动生成引导代码,将 DataFrame 库添加为依赖项并读取 CSV 文件。

数据有不同的格式,您需要根据用例调整解析选项。 例如,您可以为解析指定分隔符或日期格式。 有关详情,请参阅 API 文档

列类型默认推断自 CSV 数据。 因此,我们能够以 Kotlin 编译器支持的类型安全方式处理数据。 读取数据后,您可以在 DataFrame 实例上使用 schema 函数检查推断的类型,如下所示:

还可以使用 describe 函数快速获得数据的统计概览:

describe 函数提供数据统计信息:数值列的最大值和最小值、唯一值和空值的计数等。 这些统计可以协助进一步的数据探索。

DataFrame API 提供了丰富的数据操作选项:选择筛选聚合操作等。

下图显示了筛选的示例。 数据已筛选至 2023 年,仅包含“datetime”列以及标题中包含“wind”一词的列:

假设,我们想要探索数据以找到统计温度最高的年份。 我们可以采取以下步骤:首先,根据 `temp` 特性以降序对 DataFrame 实例的元素进行排序。 然后,保留此排序列表的前 30 个元素。 然后,基于“datetime”的“year”特性的任何重复元素都应被移除。 得出的列表将包含具有最高 temp 值的 30 个元素中的独特元素(以年份为单位)。

我们需要从“datetime”列值中提取“year”。 为此,我们使用 expr 函数,它会创建一个仅包含年份的临时表达式列。 然后,表达式作为形参提供给 `distinct` 函数来获得最终结果。

从统计数据来看,近年来天气越来越暖。 然而,这样的趋势仅凭数字难以识别。 如果以直观方式呈现,数据就会更容易理解。 为此,我们使用 Kandy 库创建一些图表。

使用 Kandy 直观呈现数据

针对绘图,我们最近引入了 Kandy 库。 Kandy 可以用作独立库来生成图表,也可以方便地与 Kotlin Notebook 集成。 库提供的简单 DSL 能够生成各类图表。 丰富的示例图库包含可以使用 Kandy 生成的多种图表。

%use kandy 行添加到单元并执行,即可开始结合使用 Kandy 与 Kotlin Notebook。 这将自动加载最新稳定版本的 Kandy,添加所有必要 import,并添加绘图呈现。

对于 DataFrame,Kandy 提供了 plot 扩展函数来直观呈现数据。 这可以帮助我们快速绘制示例中的图表。

例如,按日期绘制温度值。 只需选择图表类型“line”,然后映射值:温度值映射到 y 轴,年份将显示在 x 轴上。 此外,我们也可以根据湿度改变绘图线的颜色 – 这将有助于深入展示温度与湿度之间的相关性。 从结果来看,我们可以得出结论:温度越低,湿度越大。

总结

Kotlin Notebook 是具有多种输出的交互式工作表,可用于探索和测试 Kotlin 代码,无需额外环境设置。

借助 Kotlin DataFrame 和 Kandy 等集成库,您可以探索、直观呈现、查找模式,以及了解有关数据的有趣信息。  您可以探索本文提供的仓库和示例,快速上手 Kotlin Notebook。

如需详细了解面向数据科学的 Kotlin,可以查看文档中的入口页面和加入 Kotlin Slack 中的 #datascience 频道

本博文英文原作者:

Sue

Anton Arhipov

image description

Discover more