适合数据分析师的桌面编程语言
很多场景都需要用编程语言对 Excel、csv 等桌面数据进行分析处理,简单些的比如用用参数查询多个格式相同的文件、批量拆分或合并文件、处理较大的文件;复杂些的比如整理格式不规范的文件、多步骤计算、判断和分支较多的流程、按序号或位置进行计算、分组后处理各组数据、多层关联计算等。
满足上述要求的编程语言很多,但很多面向的是专业程序员,比如 Java、C#,这需要理解沉重的构架,设计数据表对象(Data Table 或 Data Frame)、编写繁琐的代码,经历痛苦的学习。其实,也有一些编程语言不必搭建架构、自带数据表对象,代码简洁、学习方便,适合数据分析师在桌面使用,下面逐一介绍。
Python
Python 是灵活简单的解释型语言,常用第三方函数库 Pandas 进行数据访问和计算。Python 代码简短容易学习,常用的 IDE 是 Jupyter-Notebook(或升级版 Jupyter-Lab)。
Python 支持的数据源种类较多,读写数据源的能力比较强,纯数据读写时通常用 Pandas,代码简短;如果要访问 Excel 边框之类的风格属性,一般用 XLWings 等第三方函数库,代码会比较长。Python 的计算能力比较强,有专门用于计算的数据表对象,提供了大量的基础的计算函数,但实现复杂计算时代码较长。
单独安装 IDE 比较麻烦,要手工安装 Python 解释器,并额外安装 Numpy、Pandas 等第三方函数库,再通过命令行安装 Jupyter。使用 Anaconda 开发平台更加方便,可一键安装 Jupyter 所需的组件,但因为要整合多个不同团队的组件,稳定性不如单独安装。Jupyter 易用程度一般,要通过敲命令来显示函数说明;需要安装扩展组件才能显示函数提示;调试也要通过敲命令进行操作,比较麻烦。Jupyter 唯一的优点是界面简洁清晰,适合数据分析师使用。Python 有处理大文件的机制,但缺乏直接可用的函数,需要手工进行内外存交换。
https://www.anaconda.com/products/distribution
esProc SPL
SPL 是灵活简单的解释型数据计算语言,内置原生的数据源读写库和计算库,整体性比较好。SPL 代码简短易学,除了原生语法,还可以直接在 Excel、csv 等文件上执行 SQL。
SPL 自带 IDE,支持一键安装,不依赖外部环境或解释器,无需配置第三方函数库。SPL IDE 简洁易用,适合数据分析师。IDE 里可用快捷键显示函数说明,有函数输入提示;提供了完整的调试功能,可显示每一步的计算结果。SPL 支持的数据源种类较多,读写数据源的能力较强,可用简短的代码读写常用数据源,但不支持访问单元格边框等风格属性。SPL 计算能力较强,内置便于计算的数据表对象,提供了大量的基础计算函数,进行复杂计算时代码也不长。SPL 有较强的大文件计算能力,提供了很多直接可用的函数,可自动进行内外存交换。
http://www.raqsoft.com/esproc-desktop
KDB+ (Q)
Q 语言是简单灵活的解释型内存数据库语言,内置原生的数据源读写函数库、计算函数库,以及数据库维护函数库,常用的 IDE 是 Studio for KDB+。Q 语言的代码风格不统一,对表数据对象进行计算时采用 SQL 风格,可读性强,学习难度小;其他语句比如流程控制、数据管理则采用 APL 风格,可读性差,学习难度大。
Q 语言的计算能力比较强,内置数据表对象,提供了比较丰富的基础计算函数,可以进行较复杂的计算,代码虽短但难以编写。
Q 语言的安装比较麻烦,每一步都需要手工操作,配置时使用命令行 + 配置文件,启动时需要自己编写脚本,技术要求较高。IDE 需要单独下载,事先需安装好 Java 环境,启动 IDE 需要使用自己编写的脚本。IDE 界面过于简单,缺乏基本功能,比如函数说明、输入提示、调试功能等。Q 语言读写数据源的能力较弱,只支持私有格式和规整的 csv,几乎不支持其他数据源,包括 Excel。Q 语言大文件的处理能力比较弱,需要手工进行内外存交换,缺乏直接计算大文件的函数。
MATLAB
MATLIB 是功能全面集成度较高的解释型计算语言,内置了大量模型预测类库,也有数据源访问和数据计算类库,可以进行桌面数据的分析处理。MATLIB 使用自带的 IDE 进行数据处理,代码简短容易学习。
MATLIB IDE 通过图形界面进行安装,不依赖外部环境或第三方组件,但体积大、耗时长、步骤多。MATLIB IDE 方便易用,有函数说明和输入提示功能,具有完整的调试功能,界面简洁,适合数据分析师使用。MATLIB 支持丰富的数据源,可以用简短的代码读写 Excel/csv 中的数据,也可以访问 Excel 边框之类的风格属性,但后者要使用 com 接口,代码会比较长。MATLIB 有比较强的计算能力,内置便于计算的数据表对象,提供了丰富的基础计算函数,但实现复杂计算时代码较长。
MATLIB 有处理大文件的机制,但能力较弱,需要手工进行内外存交换,缺乏直接针对大文件的计算函数。
https://www.mathworks.com/products/matlab-online.html
R
R 是简单灵活的解释型计算语言,功能全面但集成度不够高,只内置了 csv 读写库和基本的计算库,其他功能需要使用第三方函数库。R 代码简单容易学习,常用的 IDE 是 RStudio。
需要先安装配置 R 的运行环境,再安装 RSutdio 本身,之后再安装 xlsx、xlsReadWrite、data.table 等第三方库函数,都是图形化界面,过程还算方便。RSutdio 提供了函数说明和输入提示,以及完整的调试功能,界面比较简洁,适合数据分析师。R 读写数据源的能力较强,支持种类丰富的数据源,可以用简短的代码读写 Excel/csv 里的数据,也可以读写风格属性,但需要切换类库,代码较长,风格也不统一。
R 的计算能力一般,虽然内置了数据表对象和计算函数,但功能不足数量不够丰富,往往要用第三方函数库补充,稳定性差一些。R 可以实现较复杂的计算,但代码复杂冗长,性能也较差。R 有处理大文件的机制,但能力较弱,需要手工进行内外存交换,缺乏直接计算大文件的函数。
https://posit.co/products/open-source/rstudio/
英文版