主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用 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()

该应用程序执行以下步骤:

  • 导入 getMaxHumidityPkgmatlabdatetimepandas 包。

  • getMaxHumidityPkg 实例实例化为 my_getMaxHumidityPkg

  • 创建一个名为 datadict 文件,其中包含 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

另请参阅

主题