lua库介绍:数据处理与操作工具库 - leo

leo库简介

    leo 模块的创作初衷旨在简化数据处理的复杂流程,提高代码的可读性和执行效率,希望leo 模块都能为你提供一系列便捷的工具函数,涵盖因子编码多维数组创建数据框构建列表管理以及管道操作等功能。

    要使用 Leo 模块,首先需要先安装luarocks,随后在终端执行以下命令进行安装:

luarocks install lpeg
luarocks install leo

leo库包含以下函数:

函数名功能备注
Factor()创建因子对象将分类数据编码为整数值,生成因子对象。因子对象保留原始类别信息,提供编码后的数值表示,便于统计分析和数据处理。
Array()创建多维数组创建多维数组,支持2D或3D数组,允许循环填充或线性填充。
Matrix()创建二维矩阵专门用于创建二维矩阵,并初始化每个元素的值,适用于数学计算、图像处理等场景。
DataFrame()创建数据框对象创建数据框对象,存储结构化数据,提供方便的数据操作接口。支持列式存储,允许对每列进行独立操作,如过滤、排序、聚合等。
List()创建列表对象创建列表对象,支持从变长参数或单个表中提取元素。列表对象支持动态添加和删除元素,适用于频繁修改数据结构的场景。
Pipe()创建管道对象创建管道对象,允许通过链式调用对数据进行一系列操作。简化复杂转换过程,减少嵌套调用带来的代码复杂度,实现高效的流水线式数据处理。
Summary()计算统计摘要计算数值数组的最小值、第一四分位数、中位数、平均值、第三四分位数和最大值。提供类似于R语言中summary()函数的功能,快速了解数据的基本统计信息。
Which()查找满足条件的元素索引查找满足给定条件的元素索引。条件可以是函数或逻辑数组,返回满足条件的元素索引列表,常用于数据筛选和异常检测。
Is_na()检查 nil 元素检查数值数组中的每个元素是否为nil,返回逻辑数组指示元素状态。
Na_omit()移除 nil 元素移除数值数组中的所有nil元素,返回新数组。
Narm忽略 nil 计算平均值计算数值数组的平均值,忽略数组中的nil元素。有效处理缺失数据,确保后续分析的准确性。

格式化输出

Show() 函数用于直接输出信息到控制台。它可以处理任意类型的值,并根据值的类型进行适当的格式化输出。对于表,它会递归地打印出表的内容;对于自定义对象,它会尝试调用对象的__tostring元方法;对于其他类型的值,它会直接打印。
比如:

local leo = require "leo"

local arrays = {
    {1,2,3},
    {4,5,6},
    {7,8,9}
}

print(arrays)
print("---------------------------")
leo.Show(arrays)

在这里插入图片描述

因子化操作

与R语言的factor()函数相似,Factor() 函数用于创建一个因子对象,该对象可以将分类数据编码为整数值,从而便于进行统计分析或其他数据处理任务。

local leo = require "leo"

local factor = leo.Factor({"apple", "banana", "apple", "orange", "banana"})
print("Levels:", table.concat(factor.levels, ", "))
print("Encoded Data:", table.concat(factor.encoded_data, ", "))

在这里插入图片描述

创建多维数组

Array() 函数用于创建一个多维数组(如矩阵或三维数组),并根据指定的参数填充数组。

local leo = require "leo"

local array_2d_loop = leo.Array({3, 3}, 1, 5, true)
local array_3d_loop = leo.Array({3, 3, 3}, 1, 5, true)

print("array_2d_loop:")
leo.Show(array_2d_loop)
print("array_3d_loop:")
leo.Show(array_3d_loop)

在这里插入图片描述

创建二维矩阵

Matrix() 函数用于创建一个二维矩阵,并初始化每个元素的值。

local leo = require "leo"

local matrix = leo.Matrix(3, 3, 0)
leo.Show(matrix)

在这里插入图片描述

创建数据框对象

DataFrame() 函数用于创建一个数据框对象,该对象可以存储结构化数据,并提供方便的数据操作接口。

local leo = require "leo"

local df = leo.DataFrame({
    Name = {"GGBond", "Mihu", "Superman Qiang"},
    Age = {15, 35, 26},
    City = {"New York", "Los Angeles", "Chicago"}
})
leo.Show(df)

在这里插入图片描述

创建列表对象

List() 函数用于创建一个列表对象,可以从变长参数或单个表中提取元素。

local leo = require "leo"

local list = leo.List(1, 2, 3, {4, 5, 6})
leo.Show(list)

在这里插入图片描述

创建管道对象

pipe() 函数用于创建一个管道对象,允许通过链式调用的方式对数据进行一系列操作。

local leo = require "leo"

local pipe = leo.Pipe(10)

local function add_one(x) return x + 1 end
local function multiply_by_two(x) return x * 2 end
local function to_string(x) return tostring(x) end

pipe(add_one)
pipe(multiply_by_two)
pipe(to_string)

local final_result = pipe:get()
print(final_result)

在这里插入图片描述

计算统计摘要

Summary() 函数用于计算一个数值数组的最小值(Min)、第一四分位数(1st Qu.)、中位数(Median)、平均值(Mean)、第三四分位数(3rd Qu.)和最大值(Max)。该函数旨在提供类似于R语言中的summary()函数的功能,方便用户快速了解数据的基本统计信息。

local data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
leo.Summary(data)

在这里插入图片描述

查找满足条件的元素索引

Which() 函数用于查找满足给定条件的元素索引。条件可以是一个函数或逻辑数组。如果条件是函数,则会遍历数组中的每个元素,并将满足条件的元素索引返回;如果条件是逻辑数组,则返回对应为true的索引。
比如找出比3大的数:

local leo = require "leo"
 
local data = {1, 2, 3, 4, 5}
local indices = leo.Which(function(x) return x > 3 end, data)
leo.Show(indices)

在这里插入图片描述

检查 nil 元素

Is_na() 函数用于检查数值数组中的每个元素是否为nil,并返回一个逻辑数组,指示每个元素的状态。

local leo = require "leo"
 
local dataset = {1, nil, 3, nil, 5}
local values = leo.Is_na(dataset)

leo.Show(values)

在这里插入图片描述

移除 nil 元素

Na_omit() 函数用于移除数值数组中的所有nil元素,并返回一个新的数组。

local leo = require "leo"
 
local data = {1, nil, 3, nil, 5}
local result = leo.Na_omit(data)
leo.Show(result)

在这里插入图片描述

忽略 nil 计算平均值

Narm() 函数用于计算数值数组的平均值,忽略数组中的nil元素。如果数组中没有非nil的数字元素,则返回nil

local leo = require "leo"
 
local data = {1, nil, 3, nil, 5}
local mean = leo.Narm(data)
print(mean) 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第10章图10.1-10.5《分析模式》原图和UML图对比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集

用Tkinter制作一个用于合并PDF文件的小程序

需要安装PyPDF2库,具体原代码如下: # -*- coding: utf-8 -*- """ Created on Sun Dec 29 14:44:20 2024author: YBK """import PyPDF2 import os import tkinter as tk import windndpdf_files [] def dragged_files(f…

K210识别技术简介与基础使用方法

目录 一、K210芯片概述 二、K210的硬件配置与开发环境 1. 硬件配置 2. 开发环境 三、K210的识别技术基础 1. 图像识别 2. 语音识别 四、K210识别技术的基础使用方法 1. 图像识别基础使用 2. 语音识别基础使用 五、K210识别技术的应用场景 六、总结与展望 一、K210芯…

Linux下实现磁盘挂载

一:查看磁盘挂载和分区情况 使用如下命令查看磁盘的挂载和分区情况 fdisk -l 如上可以看出/dev/sdb未进行挂载分区 二:磁盘分区 1:分区 fdisk /dev/sdb 根据上图中的红框内的信息进行操作 2:检查是否分区成功 fdisk -l 如上可以看到/d…

009:传统计算机视觉之边缘检测

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 本节来看一个利用传统计算机视觉方法来实现图片边缘检测的方法。 什么是边缘检测? 边缘检测是通过一些算法来识别图像中物体之间或者物体与背景之间的边界&…

Java SpringBoot使用Apache POI导入导出Excel文件

点击下载《Java SpringBoot使用Apache POI导入导出Excel文件(源代码)》 1. Apache POI 简介 Apache POI 是一个强大的 Java 库,用于处理 Microsoft Office 文档,包括 Excel 文件(.xls 和 .xlsx)。在 Java Spring Boot 项目中&am…

基于Spring Boot的健康饮食管理系统

一、系统架构与技术栈 系统架构:系统通常采用典型的三层架构设计,分为表现层、业务逻辑层和数据访问层。表现层负责与用户进行交互,展示信息和接收用户输入;业务逻辑层处理系统的核心业务,如用户信息管理、饮食记录分…

Maven 详细配置:Maven 项目 POM 文件解读

Maven 是 Java 开发领域中广泛使用的项目管理和构建工具,通过其核心配置文件——POM(Project Object Model)文件,开发者能够定义项目的基本信息、依赖关系、插件配置以及构建生命周期等关键要素。POM 文件不仅是 Maven 项目的核心…

计算机网络 (23)IP层转发分组的过程

一、IP层的基本功能 IP层(Internet Protocol Layer)是网络通信模型中的关键层,属于OSI模型的第三层,即网络层。它负责在不同网络之间传输数据包,实现网络间的互联。IP层的主要功能包括寻址、路由、分段和重组、错误检测…

pip安装paddle失败

一、pip安装paddle失败,报错如下 Preparing metadata (setup.py) ... error error: subprocess-exited-with-error import common, dual, tight, data, prox ModuleNotFoundError: No module named common [end of output] 二、解决方法: 按照提示安装对…

计算机网络 (19)扩展的以太网

前言 以太网(Ethernet)是一种局域网(LAN)技术,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网技术不断演进,从最初的10Mbps到如今的10Gbps、25Gbps、40Gbps、100Gbps等,已成…

企业二要素如何用java实现

一、什么是企业二要素? 企业二要素,通过输入统一社会信用代码、企业名称或统一社会信用代码、法人名称,验证两者是否匹配一致。 二、企业二要素适用哪些场景? 例如:企业日常运营 1.文件与资料管理:企业…

企业三要素如何用PHP实现调用

一、什么是企业三要素? 企业三要素即传入的企业名称、法人名称、社会统一信用代码或注册号,校验此三项是否一致。 二、具体怎么样通过PHP实现接口调用? 下面我们以阿里云为例,通过PHP示例代码进行调用,参考如下&…

一份完整的软件测试报告如何编写?

在软件开发的过程中,测试是必不可少的环节。然而,测试报告往往是最被忽视的部分。你是否也曾在忙碌的测试工作后,面对一份模糊不清的测试报告感到头疼?一份清晰、完整且结构合理的测试报告,能够帮助团队快速了解软件的…

021-spring-springmvc-组件

SpringMVC的handMapping 比较重要的部分 比较重要的部分 比较重要的部分 关于组件的部分 这里以 RequestMappingHandlerMapping 为例子 默认的3个组件是: org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping org.springframework.web.servlet.mvc…

Golang的并发编程实战经验

## Golang的并发编程实战经验 并发编程是什么 并发编程是指程序的多个部分可以同时执行,这样可以提高程序的性能和效率。在Golang中,并发编程是通过goroutine来实现的,goroutine是一种轻量级线程,可以在一个程序中同时运行成千上万…

【时时三省】(C语言基础)常见的动态内存错误

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对NULL指针的解引用操作 示例: malloc申请空间的时候它可能会失败 比如我申请一块非常大的空间 那么空间可能就会开辟失败 正常的话要写一个if(p=&#x…

计算机网络 (18)使用广播信道的数据链路层

一、广播信道的基本概念 广播信道是一种允许一个发送者向多个接收者发送数据的通信信道。在计算机网络中,广播信道通常用于局域网(LAN)内部的主机之间的通信。这种通信方式的主要优点是可以节省线路,实现资源共享。 二、广播信道数…

网络安全:路由技术

概述 路由技术到底研究什么内容 研究路由器寻找最佳路径的过程 路由器根据最佳路径转发数据包 知识点,重要OSRF,BGP1.静态路由原理 路由技术分类 静态路由和动态路由技术 静态路由:是第一代路由技术,由网络管理员手工静态写路由/路径告知路…

游戏引擎学习第72天

无论如何,我们今天有一些调试工作要做,因为昨天做了一些修改,结果没有时间进行调试和处理。我们知道自己还有一些需要解决的问题,却没有及时完成,所以我们想继续进行这些调试。对我们来说,拖延调试工作总是…