从文明之初到2003年,只创造了5艾字节的信息,但是现在每两天就有如此之多的信息产生 。埃里克·施密特(Eric Schmidt)
如果你是R使用者,可能你已经使用过data.table程序包 。Data.table是R中数据帧程序包的延伸 。涉及大型数据(包括RAM中1的10GB)快速集合时,该数据包也是R使用者的首选程序包 。
R的data.table程序包使用简易方便,非常通用且拥有高性能 。在R领域,此包十分出名,其每月下载量超过了4万,几乎650 CRAN(新型无线接入网构架)及Bioconductor包使用这个datatable包 。
所以,Python使用者可以从中得到什么?好消息是Python中也有与data.table等同的程序包,称为datatable,其明确注重大数据支持、高性能、内存外存数据集以及多线程算法 。某种程度上来说,这个也可以称为data.table的年轻同胞 。
Datatable
文章插图
现代机器学习应用需要处理巨大数量的数据并生成多个功能 。为了构建更精确的模型,这是必需的 。Python的datatable模块正是为了应对这种类问题而创建的 。这就相当于是一个在单节机器上以尽可能最大的速度运行大数据(达100GB)的工具包 。datatable由H2O.ai 出资开发,其首个使用者是 Driverless.ai 。
此工具箱与panda非常相似,但更侧重于速度和大数据支持 。
Pythondatatable也力求用户良好体验,反馈错误信息,拥有强大的API(应用程序编程接口) 。通过本文,可以了解如何使用此datatable以及其用于大数据时是如何优于pandas的 。
安装
在macOs中,datatable可简单地利用pip进行安装:
pip install datatable
在linux中,利用二进制发行版,就可以实现安装,如下所示:
# If you have Python 3.5pip install https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp35-cp35m-linux_x86_64.whl# If you have Python 3.6pip install https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp36-cp36m-linux_x86_64.whl
目前,datatable还未能运用于windows,但是其也正在实现对Windows的支持 。
Github Repository传送门:https://github.com/parulnith/An-Overview-of-Python-s-Datatable-package
读取数据
使用的数据集来自于Kaggle网,属于Lending Club Loan DataDataset 。此数据集是2007——2015年所有发布的贷款信息中完整的贷款数据,包括当前贷款状况(当前、滞后、全部付清等)以及最想念付款信息 。此文件包含226万行,145列 。数据规模是datatable库性能的最理想说明 。
# Importing necessary Libraries import numpy as npimport pandas as pdimport datatable as dt
将数据加载到Frame对象中 。datatable的基本分析单元就是一个Frame,这和pandas 的DataFrame 或 SQL 表是相同的概念:数据排列成具有行和列的二维数组 。
利用datatable
%%timedatatable_df = dt.fread("data.csv")__________________________________CPU times: user 30 s, sys: 3.39 s, total: 33.4 s Wall time: 23.6 s
上述fread() 函数不仅功能强大,而且速度极快 。其可自动删除和分析绝大多数文本文件、.zip压缩文档中的下载数据或URLs、读取Excel文件以及其他文件 。
不仅如此,datatable分析程序还有以下功能:
· 可以自动删除分隔符、页眉、列类型以及引号规则等 。
· 可以多源读取数据,包括包括文件、URL、shell、原始文本、存档和glob 。
· 极速多线程文件读取 。
· 显示读取文件的进度条 。
· 可以读取 RFC4180相容型及非相容型文件 。(传送门:https://tools.ietf.org/html/rfc4180)
利用pandas
现在,计算一下利用pandas来读取相同文件所用的时间 。
%%timepandas_df= pd.read_csv("data.csv")__________________________________CPU times: user 47.5 s, sys: 12.1 s, total: 59.6 sWall time: 1min 4s
结果显示,datatable在读取大数据集时优于pandas 。因为都i相同数据时,pandas读取时间超过了一分钟,而datatable则只使用了数秒 。
Frame转换
现有的Frame还可以如下所示转化为numpy或dateframe 。
numpy_df = datatable_df.to_numpy()pandas_df = datatable_df.to_pandas()
【Python的datatable程序包概述】现在将现有frame转化为pandas的dataframe对象那个,对比所用时间 。
推荐阅读
- 中国茶文化的形成简史
- 独特的扬州下午茶
- 土家四道茶的秘密
- 关于vim的实用插件
- 侗族别具风味的打油茶风俗
- 别具特色的俄罗斯茶俗
- 广东早茶的来源
- 独具趣味的湖南桃源擂茶风俗
- 企业如何解决搜索引擎中出现的负面信息?
- Java中final关键字的几种用法