一个Hy库,它通过包装Python流行的数据库(如Pandas和Matplotlib)来提供Lispy函数接口。
dev-aa-test-1的Python项目详细描述
HyFive公司
什么是HyFive?在
HyFive是一个Hy库,它通过包装Python流行的数据库(如Pandas和Matplotlib)来提供一个Lispy函数接口。在
HyFive vs.香草熊猫
熊猫有自己的怪癖。它的范围从没有filter
方法到对join
与SQL有不同的定义。这从Pandas and SQL之间令人困惑的比较中可以看出。HyFive的目标是提供一个尽可能接近Spark'sSQL and DataFrame的Lispy接口。在
从函数式编程的角度来看,Pandas接口很难组合,这与sparksql的方法链接约定不同。由于这一困难,Pandas经常不正当地鼓励数据帧的短名称,而倾向于创建中间变量,这会造成名称空间的混乱。在
HyFive使用Hy的线程宏来模拟Spark DataFrame的方法链接约定,同时使用熟悉的Pandas数据帧。考虑下面的HyFive片段:
(setvDATAFRAME(->NAME-REGISTRY(hf.with-column"variant"(let[mod-res-id(hf.mod"resident_id"3)](hf.cond-col[(hf.eq?mod-res-id1)(hf.lit"a")][(hf.eq?mod-res-id2)(hf.lit"b")][:else(hf.lit"c")])))(hf.filter(hf.is-in"variant"["a""b"]))(hf.joinAGE-REGISTRY:on"resident_id")(hf.group-by"variant")(hf.agg{"min_age"(hf.min"age")"mean_age"(hf.mean"age")"std_age"(hf.std"age")"max_age"(hf.max"age")})(hf.order-by"min_age":descTrue)))
在这里,我们执行添加列、筛选行、连接表、聚合组和排序行的简单操作。除了Lispycond
,这些操作将有一对一的转换来Spark dataframe或SQL。在
相比之下,在纯熊猫身上则需要更加努力:
^{pr2}$Pandas版本的可读性较差,我们失去了Spark dataframe或SQL的一对一转换。在
尝试HyFive
克隆存储库,并在的根目录上,在终端上输入以下命令:
./run build-docker
使用以下命令运行单元测试:
./run unit-tests .
通过运行以下命令调用Hy REPL:
./run repl
最后,使用以下方法导入HyFive:
(import[hyfive:ashf])
- 项目
标签: