# 用于数据分析的 Kotlin 和 Java 库 从数据采集到建模, Kotlin 提供了强大的库, 便利的完成在数据流程中的各种任务. 除了自己的库之外, Kotlin 还 100% 能够与 Java 互操作. 通过这种互操作能力, 可以利用经过实践验证的 Java 库的整个生态系统, 而且性能优异. 有了这些能力, 你可以在 [Kotlin 数据项目](data-analysis-overview.html) 中非常容易的使用 Kotlin 或 Java 库. ## Kotlin 库 | 库 | 用途 | 功能特性 | | --- | --- | --- | | [Kotlin DataFrame](https://github.com/Kotlin/dataframe) | * 数据采集 * 数据清理和处理 | * 用于创建, 排序, 以及清理数据帧(Data Frame), 特征工程, 等等操作 * 结构化数据处理 * 支持 CSV, JSON, 以及其他输入格式 * 从 SQL 数据库读取数据 * 连接各种 APIs 来访问数据, 并增强类型安全性 | | [Kandy](https://kotlin.github.io/kandy/welcome.html) | * 数据浏览和可视化 | * 强大, 易读, 并且类型安全的 DSL, 绘制各种类型的图表 * 使用 Kotlin 编写, 运行于 JVM 平台的开源库 * 支持 [Datalore](https://kotlin.github.io/kandy/kandy-in-datalore.html) * 与 [Kotlin DataFrame](https://kotlin.github.io/dataframe/overview.html) 无缝集成 | | [KotlinDL](https://github.com/jetbrains/kotlindl) | * 建模 | * 受 [Keras](https://keras.io/) 启发, 使用 Kotlin 编写的深度学习 API * 从头开始训练深度学习模型, 或者导入既有的 Keras 和 ONNX 模型用于推理 * 迁移学习(Transferring Learning), 根据你的任务定制既有的预先训练的模型 * 支持 [Android 平台](https://developer.android.com/about) | | [Multik](https://github.com/Kotlin/multik) | * 数据清理和处理 * 建模 | * 对多维数组的数学运算 (线性代数, 统计, 算数, 以及其它计算) * 创建, 复制, 索引, 切片, 以及其它数组运算 * 符合 Kotlin 习惯的库, 具有类型性, 维度安全性, 可交换的计算引擎, 等等优点, 可在 JVM 上运行, 或作为原生代码运行 | | [Kotlin for Apache Spark](https://github.com/JetBrains/kotlin-spark-api) | * 数据采集 * 数据清理和处理 * 数据浏览和可视化 * 建模 | * [Apache Spark](https://spark.apache.org/) 和 Kotlin 之间的兼容层 * 符合 Kotlin 习惯的代码编写的 Apache Spark 数据转换操作 * 在大括号或方法引用中简单的使用 Kotlin 功能, 例如数据类, Lambda 表达式 | | [Lets-Plot](https://lets-plot.org/kotlin/get-started.html) | * 数据浏览和可视化 | * 使用 Kotlin 语言绘制统计数据 * 支持 [Datalore](https://datalore.jetbrains.com/) * 兼容 JVM, JS, 和 Python * 在 [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) 应用程序中内嵌图表 | | [KMath](https://github.com/mipt-npm/kmath) | * 数据清理和处理 * 数据浏览和可视化 * 建模 | * 在 [Kotlin Multiplatform](https://kotlinlang.org/multiplatform/) (JVM, JS, Native, 和 Wasm) 中处理数学抽象的模块化库 * 用于代数结构, 数学表达式, 直方图, 和流操作的 API * 可以既有的 Java 和 Kotlin 库互换的包装, 包括 [ND4J](https://github.com/eclipse/deeplearning4j/tree/master/nd4j), [Apache Commons Math](https://commons.apache.org/proper/commons-math/), 和 [Multik](https://github.com/Kotlin/multik) * 受 Python 的 [NumPy](https://numpy.org/) 启发, 但添加了其它功能, 例如类型安全 | | [kravis](https://github.com/holgerbrandl/kravis) | * 数据浏览和可视化 | * 表格数据的可视化 * 受 R 的 [ggplot](https://ggplot2.tidyverse.org/) 启发 | ## Java 库 由于 Kotlin 提供了与 Java 一流的互操作性, 你可以在你的 Kotlin 代码中使用 Java 的数据任务库. 下面是这些库的一些例子: | 库 | 用途 | 功能特性 | | --- | --- | --- | | [Tablesaw](https://github.com/jtablesaw/tablesaw) | * 数据采集 * 数据清理和处理 * 数据浏览和可视化 | * 用于装载, 清理, 转换, 过滤, 以及汇总数据的工具 * 受 [Plot.ly](https://plotly.com/) 启发 | | [CoreNLP](https://stanfordnlp.github.io/CoreNLP/) | * 数据清理和处理 | * 用于自然语言处理的工具包 * 文本的语言注解, 例如情感和引用归属 * 支持 8 种语言 | | [Smile](https://github.com/haifengl/smile) | * 数据清理和处理 * 数据浏览和可视化 * 建模 | * 用于机器学习和自然语言处理的现成算法 * 线性代数, 绘图, 插值, 以及可视化工具 * 提供功能强大的 [Kotlin API](https://github.com/haifengl/smile/tree/master/kotlin), [Scala API](https://github.com/haifengl/smile/tree/master/scala), [Clojure API](https://github.com/haifengl/smile/tree/master/clojure), 等等 | | [Smile-NLP-kt](https://github.com/londogard/smile-nlp-kt) | * 数据清理和处理 | * 使用 Kotlin 重写的, Smile 的自然语言处理部分的 [Scala](https://www.scala-lang.org/api/current/) 隐式转换(implicit) * 运算使用 Kotlin 扩展函数和接口格式 * 语句分解, 词干提取, 词袋分析, 以及其它任务 | | [ND4J](https://github.com/eclipse/deeplearning4j/tree/master/nd4j) | * 数据清理和处理 * 建模 | * 用于 JVM 平台的矩阵数学库 * 超过 500 种数学, 线性代数, 以及深度学习运算 | | [Apache Commons Math](https://commons.apache.org/proper/commons-math/) | * 数据清理和处理 * 建模 | * Java 的数学和统计运算 * 相关性, 分布, 线性代数, 几何, 以及其它运算 * 机器学习模型 | | [NM Dev](https://nm.dev/) | * 数据清理和处理 * 建模 | * Java 的数值算法数学库 * 面向对象的数值方法 * 线性代数, 优化, 统计, 微积分, 以及其它运算 | | [Apache OpenNLP](https://opennlp.apache.org/) | * 数据清理和处理 * 建模 | * 基于机器学习的自然语言文本处理工具包 * 标记化, 语句分割, 词性标注, 以及其它任务 * 用于数据建模和模型验证的内建工具 | | [Charts](https://github.com/HanSolo/charts) | * 数据浏览和可视化 | * 用于科学图表的 [JavaFX](https://openjfx.io/) 库 * 复杂图表,例如对数图, 热图, 以及力导向图(Force-Directed Graph) | | [DeepLearning4J](https://deeplearning4j.konduit.ai) | * 建模 | * Java 的深度学习库 * 导入并重新训练模型 ([Pytorch](https://pytorch.org/), [Tensorflow](https://www.tensorflow.org/), [Keras](https://keras.io/)) * 在 JVM 微服务环境, 移动设备, IoT, 以及 [Apache Spark](https://spark.apache.org/) 中部署 | | [Timefold](https://github.com/TimefoldAI/) | * 建模 | * 最优规划问题的求解器实用程序 * 兼容面向对象编程和函数式编程 |