使用代码节点-用NumPy实现描述性统计

下面举一个例子,用代码节点,使用NumPy包对输入的数组中的数据进行描述性统计。新建一个工作流,添加一个代码节点。将各节点如图5-3进行连接。

Document Image
\[\]

图5-3 新建工作流

单击“开始”节点,指定输入变量input,变量类型为包含Number的数组。单击“代码”节点,用IDE输入下面的Python代码。指定输出变量stats,字符串数据类型。需要计算的描述性统计量如代码中所示。

code.python
async def main(args: Args) -> Output:
    import numpy as np
    import json
    data0 = args.params['input']
    data_list = json.loads(data0)  # 解析为列表
    data = np.array(list(map(float, data_list)))
    # 基础统计量
    stats = {
        "均值": np.mean(data),          # 算术平均值
        "中位数": np.median(data),      # 中间值
        "标准差": np.std(data),         # 数据离散程度
        "方差": np.var(data),           # 标准差的平方
        "最小值": np.min(data),         # 数组最小值
        "最大值": np.max(data),         # 数组最大值
        "极差": np.ptp(data),          # 最大值-最小值
        "四分位数": [
            np.percentile(data, 25),   # 第一四分位数(Q1)
            np.percentile(data, 75)    # 第三四分位数(Q3)
        ],
        "总和": np.sum(data)           # 所有元素求和
    }
    return str(stats)

单击“结束”节点,指定输出变量的名称为“output”,值为代码节点的输出stats。

试运行代码,输入下面的数组。

code.python
[3.14,4,11,20,18]

继续运行后得到下面的字符串。

code.python
{
  "output": "{'均值': 11.228, '中位数': 11.0, '标准差': 6.9357001088570716, '方差': 48.103936, '最小值': 3.14, '最大值': 20.0, '极差': 16.86, '四分位数': [4.0, 18.0], '总和': 56.14}"
}

得到了各描述性统计量的计算值。