modelx v0.12.0 (2021年1月11日)#

本次发布引入了以下增强功能。

功能增强#

pandas DataFrame 和 Series 的新接口

在Models和Spaces中引用的pandas DataFrame和Series对象现在可以写入和读取Excel或CSV文本文件。

新增了两种方法:Model.new_pandasUserSpace.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