一个Hy库,它通过包装Python流行的数据库(如Pandas和Matplotlib)来提供Lispy函数接口。

dev-aa-test-1的Python项目详细描述


HyFive公司

什么是HyFive?在

HyFive是一个Hy库,它通过包装Python流行的数据库(如PandasMatplotlib)来提供一个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])

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
HTTP标头的java InputStream未终止   java测试SpringWebListener   具有定义的替换编号Java的regex ReplaceAll   在java中使用contains()方法   java在选择查询中使用JoinColumn字段   具有用户的java Start-stop demon不是以给定用户启动   java glBufferData生成GL\u无效\u操作   java中循环代码的循环   Java位无符号移位(>>>>)会产生奇怪的结果   java HQL使用点分隔符从select获取结果   条纹、弹簧、玩耍(或?):使用哪种高性能Java框架?   广播接收机中的java停止服务   java回收器视图占据整个屏幕。不在上面显示我的UI元素   java使MySQL查询更快   java MappedByteBuffer查询   java递归算法问题