modelx v0.12.0 (2021年1月11日)#
本次发布引入了以下增强功能。
功能增强#
pandas DataFrame 和 Series 的新接口
在Models和Spaces中引用的pandas DataFrame和Series对象现在可以写入和读取Excel或CSV文本文件。
新增了两种方法:Model.new_pandas 和
UserSpace.new_pandas。
通过调用其中任一方法,用户可以创建一个
PandasData 对象,该对象将
DataFrame/Series 与文件路径及文件类型("excel" 或 "csv")关联起来,
并将该 PandasData 对象分配给一个引用。
例如,下面的脚本创建了一个示例数据框 df:
>>> import pandas as pd
>>> import numpy as np
>>> index = pd.date_range("20210101", periods=3)
>>> df = pd.DataFrame(np.random.randn(3, 3), index=index, columns=list("XYZ"))
>>> df
X Y Z
2021-01-01 0.184497 0.140037 -1.599499
2021-01-02 -1.029170 0.588080 0.081129
2021-01-03 0.028450 -0.490102 0.025208
以下代码创建了一个PandasData对象,其中包含上面创建的DataFrame,并将其分配给Model1.Space1中名为x的引用:
>>> import modelx as mx
>>> space = mx.new_space() # Creates Model1.Space1
>>> space.new_pandas("x", "Space1/df.xlsx", data=df, filetype="excel")
>>> space.x
<modelx.io.pandasio.PandasData at 0x15efa565548>
要获取DataFrame,请调用PandasData对象
或访问其value属性:
>>> space.x() # or space.value
X Y Z
2021-01-01 0.184497 0.140037 -1.599499
2021-01-02 -1.029170 0.588080 0.081129
2021-01-03 0.028450 -0.490102 0.025208
当模型保存时,DataFrame会被写入一个名为df.xlsx的Excel文件,该文件位于model中的Space1文件夹下。
>>> model.write("model") # `model` is the parent of `space`
当模型通过modelx.read_model()函数重新读取时,
DataFrame会从文件中读取:
>>> model2 = mx.read_model("model", name="Model2")
>>> model2.Space1.x()
X Y Z
2021-01-01 0.184497 0.140037 -1.599499
2021-01-02 -1.029170 0.588080 0.081129
2021-01-03 0.028450 -0.490102 0.025208