1. 准备工作---数据分析编程 - 从入门到精通
1.1 下载与安装
使用 SPL 的免费桌面版就可以了。
下载地址:桌面版 产品下载 | 润乾 - 高性价比报表工具 | 高性能大数据计算 | 一键式自动建模
下载后按照向导操作安装即可,安装完毕,运行 SPL IDE,界面如下:
点击 Tool/Options, 配置主目录:
配置完主目录后,本文档中用到的所有数据文件和脚本文件只要放置于主目录下,则脚本中引用时均可不必指定目录名,脚本更简洁易读。
1.2 网格式编程
在 SPL IDE 主界面上点击 File/New,可以看到一个类 Excel 的网格式界面如下:
SPL 采用类 Excel 的网格式编程,这是一种创新的数据计算方式,它将传统的文本代码编写方式转变为直观的二维网格布局。这种编程模式特别适合处理复杂的数据计算任务,具有以下显著特点:
- 直观可视:计算逻辑以网格形式展现,每个单元格独立又相互关联
- 模块化设计:每个单元格可视为独立计算单元,便于维护和复用
- 顺序可控:通过网格布局自然体现计算顺序,逻辑清晰可见
- 即时反馈:每个单元格计算结果即时显示,调试过程直观高效
1.2.1 所见即所得的计算界面
在 SPL 的网格界面中,每个单元格的代码和计算结果可以同时呈现。编写代码后无需运行整个程序,可以只计算并显示当前单元格的结果。这种即时反馈机制极大提升了开发效率。
如上图,在 A1 单元格中键入 =3+5 ,然后选中 A1 单元格,点鼠标右键,点击 Calculate active cell 或键 Alt+Enter,即可计算当前选中的单元格。
这里的表达式 =3+5 和 Excel 比较像,常规 Excel 支持的四则运算在这里都可以直接运行。不妨尝试一下其它的四则运算,体会一下两者的相似之处。
界面查看结果:在网格中,每个单元格右侧会直接显示该单元格的计算结果,包括标量值、表格数据或图形输出,可以一目了然地掌握每个计算步骤的输出状态。
知识点:Excel 和 SPL 的异同
相同点:
- 都是网格式界面
- 支持常规四则运算表达式
- 可以只计算单个单元格
不同点:
- Excel 在单元格中键入完表达式按回车或鼠标离开,即会自动计算当前单元格;SPL 则必须选中当前单元格点鼠标右键,点击 Calculate active cell 或键 Alt+Enter 才会计算。
- Excel 单元格的计算结果直接显示在单元格中,SPL 则显示在界面的右侧。
1.2.2 单元格命名与变量化使用
单元格命名:
SPL 采用与 Excel 类似的网格坐标系统来标识和引用单元格,每个单元格由其列标(字母)和行号(数字)唯一确定
示例:
- A1:第 A 列第 1 行的单元格
- B3:第 B 列第 3 行的单元格
- AA100:第 AA 列第 100 行的单元格
单元格引用:
1. 直接坐标引用:
在 A2 单元格中引用 A1 的值
知识点:
单元格可在其他单元格中作为变量被引用或赋值,从而少了很多为变量命名的烦恼,对于一些有规律的数据或者变量,直接引用单元格而不需要另外命名会非常方便。
2. 区域引用:
计算 A1 到 B4 这片单元格的和
知识点:Excel 和 SPL 的异同
相同点:
- 单元格的命名规则一致
- 用 A1:B4 表示 A1 到 B4 这片矩形单元格区域
- 可以用 sum 函数对单元格片区进行聚合运算
不同点:
- Excel 中对单元格片区求和的表达式语法为 =sum(A1:B4),SPL 中为 =sum([A1:B4]) 或 [A1:B4].sum()
1.2.3 独立的计算单元
每个单元格都是独立的计算单元,支持:
- 简单计算
- 复杂数据处理
- 条件分支
- 循环处理
单元格计算结果会自动传递给依赖它的下游单元格,形成完整的数据流。
1.2.4 单元格计算顺序
SPL 网格的计算顺序遵循从左到右、从上到下的规则:
从上图中 [A1:B4] 的返回值可以看出,单元格的计算顺序是从左到右、从上到下。
知识点:Excel 和 SPL 的不同
Excel 中不能在单元格中单独显示 A1:B4 这样的数据集合,必须聚合成单个值才可以展现;SPL 中可以在单元格里展现 =[A1:B4] 这样的数据集合,且该数据集合是有次序的,上图红框里的 Index 列就是数据的序号,在 SPL 中将这样有序的数据集合称为序列。
SPL 的网格式编程重新定义了数据处理的体验,将编程的精确性与电子表格的直观性完美结合,为您提供了一种更高效、更可控的数据计算解决方案。
1.3 本文档用到的数据文件
点击下载
1.4 一个最简单的分析案例
从 sales.csv 中读取销售数据,按销售员分组统计销售数量,并按结果排序,结果写回 salesGroupSum.csv 文件中
A | |
---|---|
1 | =file(“sales.csv”).import@tc(sales,quantity) |
2 | =A1.groups(sales;sum(quantity):totalQuantity) |
3 | =A2.sort(totalQuantity:-1) |
4 | =file(“salesGroupSum.csv”).export@tc(A3) |
A1 从 sales.csv 文件中读取 sales、quantity 列的数据。
A2 将 A1 中读取的数据按 sales 分组汇总统计 quantity。
A3 将 A2 中的分组结果按 totalQuantity 逆序排序。
A4 将 A3 中的排序结果写出到 salesGroupSum.csv 文件中。
可以暂时不去理解这些代码的含义,只是抄过来执行感受一下 SPL 程序。我们在后续章节中会逐步讲述相关的语法。
上述代码在网格中运算后,可以直接在网格的右侧看到 A3 单元格的值:
打开主目录,可以看到主目录下多了 salesGroupSum.csv 文件,打开此文件,可以看到:
csv 文件中看到的结果,和界面上看到的 A3 单元格的结果一致。