关键词:Julia; Excel, xlsx, xls, csv; Dataframe
Julia读取csv文件,挺方便的。
using CSV, DataFrames
df = DataFrame(CSV.File("file.csv")) # 写法1:常规写法;
df = CSV.File("file.csv")|>DataFrame # 写法2:链式,记得在R语言中常见链式。
在读写Excel文档方面,XLSX.jl官网中,提到了Julia常用的Excel读写包。结合本人浅尝辄止的使用,向大家分享一些经验,同时指出一些小坑,希望对大家有帮助。
ExcelFiles.jl 和 ExcelReader.jl(前者依赖后者)
依赖:调用Python的xlrd包。相关设置,请点击这里。
格式:仅支持xls格式,因为它依赖的xlrd目前只支持xls格式。xlrd已官宣不支持xlsx。
痛点:在读取文件时,range(形如A1:B5)名不能省略,这就非常不方便了。
其他:目前,官方范例中读取的仍旧是xlsx文件。但从更新日志来看,2.0.0版本开始,就已不再支持xls以外格式。降级办法,参考这里。
示例:
using ExcelFiles, DataFrames
df = DataFrame(load("data.xls", "Sheet1")) # 注意:最新版xlrd只支持xls、不支持xlsx
Taro.jl
依赖:调用Java包。
格式:文档显示支持xlsx和xls格式。
痛点:如果没有教程,设置起来不容易。好在,给大家趟了路,在这里看教程。
示例:
using Taro, DataFrames
Taro.init() # 一定要加这行
df=Taro.readxl("file.xls", 0,"A1:B5")|>DataFrame
## XLSX.jl
依赖:无。原生Julia包。不依赖Python,不依赖Java,安装后即可使用。
格式:仅支持xlsx格式,就像它的名字所暗示的那样,
痛点:不支持xls。
示例:
```julia
using DataFrames, XLSX
df = DataFrame(XLSX.readtable("result.xlsx",1)...) # 1代表sheet索引,...不可省略
其他方案
上面的解决方案均在Julia下,你也可以用Python pandas把Excel文件转为csv,再送到Julia;也可以把数据加载到MySQL等数据库中,再从中读取数据。小项目,或者数据量小,怎么方便快捷,就怎么来。
还有pycall调用pandas,也是个思路。本人并没试过。
这只是个汇总贴,希望能为大家节约一些查资料的时间。所述经验,可能本身存在疏漏错误。同时,Julia社区对包的开发迅速,“此一时,彼一时”,现在有用的经验,也可能会随着时间的流逝而变得无效。