Model.new_pandas#
- Model.new_pandas(name, path, data, file_type=None, sheet=None, filetype=None)#
创建一个绑定到pandas DataFrame或Series的引用,关联一个新的
PandasData
对象。该方法创建一个名为
name
的Reference,绑定到作为data
传入的pandas DataFrame或Series,从path
、file_type
及可选的sheet
创建一个PandasData
对象,并将其与pandas对象关联。pandas对象可以通过常规赋值操作分配给References,例如
space.x = df
,但以这种方式分配的pandas对象会与其他Reference对象一起通过write()
或write_model()
保存在二进制文件中。该方法允许通过write()
或write_model()
将分配的pandas对象保存在单独的文件中,利用存储在关联的PandasData
中的信息。当模型保存时,DataFrame或Series会被写入到由
path
参数指定路径的文件中,文件格式由file_type
参数指定。如果path
是相对路径,则相对于模型文件夹进行解析。file_type
可以取值为"excel"或"csv"。如果为
file_type
指定"excel",pandas对象将被写入Excel文件。path
中的文件名必须包含".xlsx"、".xlsm"或".xls"扩展名。 可选参数sheet
用于指定Excel文件中的工作表名称。 多个PandasData
对象可以关联到同一个Excel文件, 只要它们的工作表名称各不相同。 如果为file_type
指定"csv",pandas对象将被写入CSV文件。 一个文件中只能保存一个对象。此方法内部使用 pandas.read_excel 函数和 to_excel 方法来读写Excel文件, 因此必须根据Excel文件类型安装相应的读写引擎。 有关Excel引擎所需的软件包,请参阅 pandas'文档。
示例
以下脚本创建了一个示例数据框
df
:>>> 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
以下代码将上面创建的DataFrame赋值给
space
中名为x
的Reference,同时创建一个PandasData
对象:>>> space.new_pandas("x", "Space1/df.xlsx", data=df, file_type="excel", sheet="df1") >>> space.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 >>> model.iospecs [<PandasData path='Space1/df.xlsx' file_type='excel' sheet='df1'>]
当模型保存时,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
- Parameters:
版本0.20.0变更:
添加了
sheet
参数,以允许将对象写入Excel文件中的多个工作表。参数
filetype
已被替换为file_type
。filetype
仍可使用但会触发弃用警告。
版本0.13.0变更:移除了
expose_data
参数。版本0.13.0变更:新增
expose_data
参数。默认情况下,data
会被直接赋值而非使用其PandasData
对象在0.12.0版本中新增。