加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

媲美Pandas的数据分析工具包Datatable

发布时间:2019-11-05 04:49:19 所属栏目:教程 来源:新猿IT人
导读:媒介 Data.table 是 R 中一个很是通用和高机能的包,行使简朴、利便并且速率快,在 R 说话社区很是受接待,每个月的下载量高出 40 万,有近 650 个 CRAN 和 Bioconductor 软件包行使它。假如你是 R 的行使者,也许已经行使过 data.table 包。 而对付 Pytho
副问题[/!--empirenews.page--]

媒介

Data.table 是 R 中一个很是通用和高机能的包,行使简朴、利便并且速率快,在 R 说话社区很是受接待,每个月的下载量高出 40 万,有近 650 个 CRAN 和 Bioconductor 软件包行使它。假如你是 R 的行使者,也许已经行使过 data.table 包。

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

Datatable简介

媲美pandas的数据说明器材包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

媲美pandas的数据说明器材包Datatable

如上所示,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 行数据,如下所示:

媲美pandas的数据说明器材包Datatable

留意:这里用颜色来指代数据的范例,个中赤色暗示字符串,绿色暗示整型,而蓝色代表浮点型。

2.5 统计总结

在 Pandas 中,总结并计较数据的统计信息是一个很是耗损内存的进程,但这个进程在 datatable 包中是很利便的。如下所示,行使 datatable 包计较以下每列的统计信息:

下面别离行使 datatable 和Pandas 来计较每列数据的均值,并较量二者运行时刻的差别。

  • Datatable读取
  • Pandas读取

行使 Pandas 计较时抛出内存错误的非常。

数据操纵

和 dataframe 一样,datatable 也是柱状数据布局。在 datatable 中,全部这些操纵的首要器材是方括号,其灵感来自传统的矩阵索引,但它包括更多的成果。诸如矩阵索引,C/C++,R,Pandas,Numpy 中都行使沟通的 DT[i,j] 的数学暗示法。下面来看看怎样行使 datatable 来举办一些常见的数据处理赏罚事变。

媲美pandas的数据说明器材包Datatable

选择行/列的子集

下面的代码可以或许从整个数据齐集筛选出全部行及 funded_amnt 列:

展示怎样选择数据齐集前5行3列的数据,如下所示:

帧排序

  • datatable 排序

在 datatable 中通过特定的列来对帧举办排序操纵,如下所示:

  • Pandas 排序

可以看到两种包在排序时刻方面存在明明的差别。

  • 删除行/列

下面展示怎样删除 member_id 这一列的数据:

  • 分组 (GroupBy)

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读