使用 MATLAB Compiler SDK 处理 Pandas DataFrames
支持的平台:Windows®、Linux®、Mac
此示例演示了如何创建一个 Python® 应用程序,该应用程序将存储在 Pandas DataFrame 中的天气数据从 Python 传递到 MATLAB®。MATLAB 函数用于在给定的天气数据中查找最大湿度值。Python 应用程序创建 DataFrame,调用 MATLAB 函数,并显示结果。
当您在 MATLAB 和 Python 之间传递数据时,MATLAB Compiler SDK™ 会将数据转换为等效的数据类型。有关数据类型及其转换的完整列表,请参阅在 MATLAB 和 Python 之间传递数据。有关数据类型及其在表或 DataFrames 内转换时的转换列表,请参阅在 MATLAB 表格和 Pandas DataFrames 之间转换。
前提条件
验证您所安装的 Python 版本是否与 MATLAB Compiler SDK 兼容。有关详细信息,请参阅MATLABCompiler SDK Python 目标要求。
目标计算机需要 MATLAB Runtime 来运行已部署的 MATLAB 代码。您可以将 MATLAB Runtime 包含在 Python 包的安装程序中,也可以单独安装它。有关详细信息,请参阅下载并安装 MATLAB Runtime。
您还需要一个已安装 Pandas 的 Python 环境。
在 MATLAB 中创建函数
此 MATLAB 函数取过去 24 小时的天气数据(以 pandas.DataFrame 指定),并返回该时间段内的最高湿度。您可以使用 MATLAB Compiler SDK 将该函数打包到一个 Python 模块中。要做到这一点,首先将此函数保存为 getMaxHumidity.m。
function max_humidity = getMaxHumidity(weatherData) % Given a table of data recorded by a weather station over 24 hours, get the max % humidity. max_humidity = max(weatherData(:,4)); end
创建 Python 包
使用 Python 包编译器或 compiler.build.pythonPackage 函数构建 Python 包。将 getMaxHumidity.m 文件打包,并将包命名为 getMaxHumidityPkg。
例如,如果您正在使用 compiler.build.pythonPackage,请使用以下命令。
buildResults = compiler.build.pythonPackage( ... 'getMaxHumidity.m', ... 'PackageName','getMaxHumidityPkg');
有关详细信息,请参阅生成 Python 包并编译 Python 应用程序。
编写 Python 应用程序代码
使用 Python 编写代码,用于名为 getMaxHumiditySample.py 的应用程序。此示例应用程序创建一个包含天气数据的 pandas.DataFrame 文件,并将该文件传递给打包的函数,该函数返回最大湿度值。
#!/usr/bin/env python
import getMaxHumidityPkg
# Import the matlab module only after you have imported
# MATLAB Compiler SDK generated Python modules.
import matlab
import datetime as dt
import pandas as pd
try:
# Initialize Python module created with MATLAB Compiler SDK.
my_getMaxHumidityPkg = getMaxHumidityPkg.initialize()
except Exception as e:
print("Error initializing getMaxHumidityPkg package\\n:{}".format(e))
exit(1)
try:
# Create a DataFrame from the data for the past 24 hours.
data = {
"Time": [
dt.datetime.strptime(i, "%Y-%m-%d %H:%M")
for i in [
"2024-10-30 18:00",
"2024-10-30 21:00",
"2024-10-31 00:00",
"2024-10-31 03:00",
"2024-10-31 06:00",
"2024-10-31 09:00",
"2024-10-31 12:00",
"2024-10-31 15:00",
"2024-10-31 18:00"
]
],
"Temperature (°F)": [67, 64, 62, 60, 58, 61, 70, 75, 79],
"Weather": [
"Clear",
"Overcast",
"Passing clouds",
"Passing clouds",
"Passing clouds",
"Partly sunny",
"Partly sunny",
"Passing clouds",
"Partly sunny"
],
"Wind Speed (mph)": [8, 10, 7, 6, 5, 7, 9, 10, 12],
"Humidity (%)": [51, 73, 78, 80, 82, 74, 65, 58, 50],
}
# Convert data into a DataFrame.
xIn = pd.DataFrame(data)
# Call the packaged function.
yOut = my_getMaxHumidityPkg.getMaxHumidity(xIn)
print(yOut)
except Exception as e:
print("Error occurred during program execution\\n:{}".format(e))
my_getMaxHumidityPkg.terminate()该应用程序执行以下步骤:
导入
getMaxHumidityPkg、matlab、datetime和pandas包。将
getMaxHumidityPkg实例实例化为my_getMaxHumidityPkg。创建一个名为
data的dict文件,其中包含 24 小时的天气数据,并将其转换为 Pandas DataFrame。调用
getMaxHumidityPkg包中的getMaxHumidity方法将天气数据转换为 MATLAB 表,并获取Humidity (%)列中的最大值。显示结果。
使用
try模块来捕获并处理任何异常。
安装并运行 Python 包
在目标计算机上,安装生成的 Python 包。有关详细信息,请参阅安装并导入 MATLAB Compiler SDK Python 包。
在系统命令提示符中,导航到包含生成文件的文件夹并安装 Python 包。
python -m pip install .运行该应用程序。
python getMaxHumidityPkg.py该应用程序生成此输出。
Humidity___ 0 82
另请参阅
主题
- 在 MATLAB 表格和 Pandas DataFrames 之间转换
- 在 Python 中使用 MATLAB 数组 (MATLAB Production Server)
- 使用 Python 字典数据计算胜率
- matlab Python 模块 (MATLAB Production Server)
- 调用打包的 MATLAB 函数 (MATLAB Production Server)