画一些小的表达图;使之被黑客攻击。

expr的Python项目详细描述


expr

small datasets上创建数学运算的简单可视化 通过呈现一个expression graph,显示您的朋友或序列化它以备以后使用。

内容

使用量

下面的示例使用python交互式shell

开始

从模块中导入一些内容

fromexprimportExpr,NumExpr

构造表达式

expr=Expr(operation_name='+',arguments=[NumExpr(number=1),Expr(operation_name='/',arguments=[NumExpr(number=2),NumExpr(number=3),])])

得到答案

>>expr.resolve()1.6666666666666665

绘制图表

>>graph=expr.graph()>>graph.write_png('example.png')True

example.png

example

不太冗长

使用as导入内容,通过对输入手指的别名 人物离开。在python中,我们不需要关心函数是否指定 关键字或位置签名,所以我们不必为那些冗长的 关键词,嘿。

>>>fromexprimportExprasE,NumExprasN>>>expr=E('/',[N(22),N(7)])>>>expr.resolve()3.142857142857143>>>expr.graph().write_png('pi.png')True

pi.png

pi

涉及熊猫

我们可以创建不仅仅涉及数字的表达式…

>>>importpandas>>>fromexprimport(...ExprasE,...NumExprasN,...DataFrameExprasD,...)

创建一些愚蠢的数据集

>>>deftwo_by_four():...data=[(n+1,n+1)forninrange(4)]...returnpandas.DataFrame.from_records(data=data,columns=['a','b'])>>>df_A=two_by_four()>>>df_B=two_by_four()>>>df_Aab011122233344

创建expression对象,即DataFrameExpr对象(此处为别名 因为D)接受一个可选参数name,如果 显示,否则将应用自动生成的标签。

>>>expr=E('*',[N(3),E('+',[D(df_A,'A'),D(df_B,'B')])])>>>expr.graph().write_png('dataframe.png')True>>>expr.resolve()01066112122181832424

dataframe.png

dataframe

串行化

让我们使用json序列化上面的示例,任何传递给 serialise方法在应用serialiser函数时使用。

>>>importjson>>>print(expr.serialise(json.dumps,indent=4)){"__type__":"Expr","operation_name":"*","arguments":[{"__type__":"NumExpr","number":3.0},{"__type__":"Expr","operation_name":"+","arguments":[{"__type__":"DataFrameExpr","name":"A","dataframe":{"a":{"0":1,"1":2,"2":3,"3":4},"b":{"0":1,"1":2,"2":3,"3":4}}},{"__type__":"DataFrameExpr","name":"B","dataframe":{"a":{"0":1,"1":2,"2":3,"3":4},"b":{"0":1,"1":2,"2":3,"3":4}}}]}]}

获得功能

这个包中提供的最后一个表达式是FuncExpr,它适用于 提供的参数的任意函数(应该是对象 实现一个resolve方法)。关键字也被应用,可能用于 指定不必是表达式对象的选项。做作的 下面是FuncExpr用法的示例。

进行一些智能导入

importpandasfromexprimport(ExprasE,NumExprasN,DataFrameExprasD,FuncExprasF,)

定义用于创建DataFrame对象的工厂函数

defx_by_y(x,y,columns=False):data=[[a+bforbinrange(x)]forainrange(y)]ifcolumnsisFalse:columns=[chr(97+c)forcinrange(x)]returnpandas.DataFrame.from_records(data=data,columns=columns)

制作一些测向仪以备日后使用

df_A=x_by_y(3,4)df_B=x_by_y(3,4)df_C=x_by_y(3,4)

现在设置表达式并查看其图表

expr=E('+',[E('*',[N(3),F('pandas.concat',[D(x_by_y(1,4,['a'])),D(x_by_y(1,4,['b'])),D(x_by_y(1,4,['c'])),],axis=1)]),D(x_by_y(3,4))])G=expr.graph()G.write_png('func.png')

func.png

func

疯狂的

为什么不笨拙地想象一个调用堆栈来满足听众的需求呢?

已知问题

如果您喜欢yaml,序列化pandas对象,mayproblematic,但是 json应该没问题。

颜色由clrs.cc

提供

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

推荐PyPI第三方库


热门话题
在Java中从本地文件系统导入文件   spring boot如何在Java SpringBoot项目中集成Olingo(Odata)   java查找连续数组中缺少的第k个元素(超过时间限制)   java为什么在mySql中插入1/2行时会得到2/4行   java不能在静态上下文中使用它   File Observer方法的java My onEvent()部分不起作用   java Netty NioSocketChannel在多线程写入时收到中断消息   java将文件夹与父文件夹一起复制   java我的TictaToe代码出了什么问题?如何检查已采取的措施?   java Swing JTable更新   java如何将cordinates查找为int   如何使用selenium和java在firefox中打开新的空选项卡   java Gradle构建输出Jar未运行   java没有GET/WEBINF/jsp/login的映射。jsp