千家信息网

r语言中数据分析工具包Datatable有什么用

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关r语言中数据分析工具包Datatable有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言Data.table 是 R 中一个非
千家信息网最后更新 2025年02月05日r语言中数据分析工具包Datatable有什么用

这篇文章将为大家详细讲解有关r语言中数据分析工具包Datatable有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

前言

Data.table 是 R 中一个非常通用和高性能的包,使用简单、方便而且速度快,在 R 语言社区非常受欢迎,每个月的下载量超过 40 万,有近 650 个 CRAN 和 Bioconductor 软件包使用它。如果你是 R 的使用者,可能已经使用过 data.table 包。

而对于 Python 用户,同样存在一个名为 datatable 包,专注于大数据支持、高性能内存/内存不足的数据集以及多线程算法等问题。在某种程度上,datatable 可以被称为是 Python 中的 data.table。

Datatable简介

为了能够更准确地构建模型,现在机器学习应用通常要处理大量的数据并生成多种特征,这已成为必要的。而 Python 的 datatable 模块为解决这个问题提供了良好的支持,以可能的最大速度在单节点机器上进行大数据操作 (最多100GB)。datatable 包的开发由 H2O.ai 赞助,它的第一个用户是 Driverless.ai。

2.1 安装

  • Mac OS系统

  • Linux系统

安装过程需要通过二进制分布来实现

很遗憾的是,目前 datatable 包还不能在 Windows 系统上工作,但 Python 官方也在努力地增加其对 Windows 的支持。更多的信息可以查看 Build instructions 的说明。

https://datatable.readthedocs.io/en/latest/install.html

2.2 数据读取

这里使用的数据集是来自 Kaggle 竞赛中的 Lending Club Loan Data 数据集, 该数据集包含2007-2015期间所有贷款人完整的贷款数据,即当前贷款状态 (当前,延迟,全额支付等) 和最新支付信息等。整个文件共包含226万行和145列数据,数据量规模非常适合演示 datatable 包的功能。

数据集:

  • 首先将数据加载到 Frame 对象中,datatable 的基本分析单位是 Frame,这与Pandas DataFrame 或 SQL table 的概念是相同的:即数据以行和列的二维数组排列展示。

使用datatable读取数据

这个数据集一共226万行,145列,将近1.2G的数据,通过datatable读取只用了2.54s

如上所示,fread() 是一个强大又快速的函数,能够自动检测并解析文本文件中大多数的参数,所支持的文件格式包括 .zip 文件、URL 数据,Excel 文件等等。此外,datatable 解析器具有如下几大功能:

  • 能够自动检测分隔符,标题,列类型,引用规则等。

  • 能够读取多种文件的数据,包括文件,URL,shell,原始文本,档案和 glob 等。

  • 提供多线程文件读取功能,以获得最大的速度。

  • 在读取大文件时包含进度指示器。

  • 可以读取 RFC4180 兼容和不兼容的文件。

  • 使用pandas读取数据

!!!注意:由于数据量过大,使用pandas读取数据会经常使服务挂机,所以可以使用数据量稍小的数据集来测试

由此可以看出,结果表明在读取大型数据时 datatable 包的性能明显优于 Pandas,Pandas 需要接近30秒的时间来读取这些数据,而 datatable 只需要2秒多。

2.3 帧转换 (Frame Conversion)

对于当前存在的帧,可以将其转换为一个 Numpy 或 Pandas dataframe 的形式,如下所示:

下面,将 datatable 读取的数据帧转换为 Pandas dataframe 形式,并比较所需的时间,如下所示:

由于 Lending Club Loan Data 数据集的数据量过大,使用to_padnas操作,jupyte服务容易挂机,所以使用一个数据集较小的进行测试。

通过datatable读取数据加上将其转换为DataFrame数组,一共是2.62ms.

单通过pandas读取数据,总共需要14.4ms。

看起来将文件作为一个 datatable frame 读取,然后将其转换为 Pandas dataframe比直接读取 Pandas dataframe 的方式所花费的时间更少。因此,通过 datatable 包导入大型的数据文件再将其转换为 Pandas dataframe 的做法是个不错的主意。

2.4 帧的基础属性

下面来介绍 datatable 中 frame 的一些基础属性,这与 Pandas 中 dataframe 的一些功能类似。

也可以通过使用 head 命令来打印出输出的前 n 行数据,如下所示:

注意:这里用颜色来指代数据的类型,其中红色表示字符串,绿色表示整型,而蓝色代表浮点型。

2.5 统计总结

在 Pandas 中,总结并计算数据的统计信息是一个非常消耗内存的过程,但这个过程在 datatable 包中是很方便的。如下所示,使用 datatable 包计算以下每列的统计信息:

下面分别使用 datatable 和Pandas 来计算每列数据的均值,并比较二者运行时间的差异。

  • Datatable读取

  • Pandas读取

使用 Pandas 计算时抛出内存错误的异常。

数据操作

和 dataframe 一样,datatable 也是柱状数据结构。在 datatable 中,所有这些操作的主要工具是方括号,其灵感来自传统的矩阵索引,但它包含更多的功能。诸如矩阵索引,C/C++,R,Pandas,Numpy 中都使用相同的 DT[i,j] 的数学表示法。下面来看看如何使用 datatable 来进行一些常见的数据处理工作。

选择行/列的子集

下面的代码能够从整个数据集中筛选出所有行及 funded_amnt 列:

展示如何选择数据集中前5行3列的数据,如下所示:

帧排序

  • datatable 排序

在 datatable 中通过特定的列来对帧进行排序操作,如下所示:

  • Pandas 排序

可以看到两种包在排序时间方面存在明显的差异。

  • 删除行/列

下面展示如何删除 member_id 这一列的数据:

  • 分组 (GroupBy)

与 Pandas 类似,datatable 同样具有分组 (GroupBy) 操作。下面来看看如何在 datatable 和 Pandas 中,通过对 grade 分组来得到 funded_amout 列的均值:

  • datatable 分组

  • pandas 分组

.f 代表什么

在 datatable 中,f 代表 frame_proxy,它提供一种简单的方式来引用当前正在操作的帧。在上面的例子中,dt.f 只代表 dt_df。

过滤行

在 datatable 中,过滤行的语法与GroupBy的语法非常相似。下面就来展示如何过滤掉 loan_amnt 中大于 funding_amnt 的值,如下所示。

保存帧

在 datatable 中,同样可以通过将帧的内容写入一个 csv 文件来保存,以便日后使用。如下所示:

有关数据操作的更多功能,可查看 datatable 包的说明文档

地址:https://datatable.readthedocs.io/en/latest/using-datatable.html

关于"r语言中数据分析工具包Datatable有什么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 文件 功能 时间 更多 分组 排序 代表 信息 内存 支持 工具 语言 分析 篇文章 系统 过程 速度 统计 工具包 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器硬件运维巡检报告pdf 俄罗斯网络安全数据库 燃烧的远征服务器人口普查2022 苏州富士通互联网科技地址 可以远程连接公司服务器吗 服务器设备硬件 网络安全基本代码常识 服务器修改端口 真实的cpk网络安全 数据库弹性云服务器指哪个服务器 数据库原表跟结果表的区别 服务器密码改了别人还能进去吗 软件开发聊天页面 服务器更新无响应 违反学生网络安全规范会怎么样 对网络安全法的总结 此数据库缺少完整数据库备份 考研网络技术就业方向 金山区企业软件开发问答知识 如何权限管理数据库 数据库的数据主要存在哪 软件开发代理公司经营范围 阿坝网络技术怎么样 计算机网络安全防护技能 数据库中包含怎么表达 软件开发销售会计科目设置 宝山网络安全教育 上海俱好货软件开发合伙企业 idea用数据库连接 太极请求服务器失败手机app
0