"\u003Cdiv\u003E\u003Cblockquote\u003E全文共\u003Cstrong\u003E5270\u003C\u002Fstrong\u003E字,预计学习时长\u003Cstrong\u003E11\u003C\u002Fstrong\u003E分钟或更长\u003C\u002Fblockquote\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Fb197a4606043471bba0af7d8e18091fd\" img_width=\"1080\" img_height=\"721\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E图片来源:pexels.com\u002F@divinetechygirl\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E从文明之初到2003年,只创造了5艾字节的信息,但是现在每两天就有如此之多的信息产生。埃里克·施密特(Eric Schmidt)\u003C\u002Fblockquote\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E如果你是R使用者,可能你已经使用过data.table程序包。Data.table是R中数据帧程序包的延伸。涉及大型数据(包括RAM中1的10GB)快速集合时,该数据包也是R使用者的首选程序包。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003ER的data.table程序包使用简易方便,非常通用且拥有高性能。在R领域,此包十分出名,其每月下载量超过了4万,几乎650 CRAN(新型无线接入网构架)及Bioconductor包使用这个datatable包。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E所以,Python使用者可以从中得到什么?好消息是Python中也有与data.table等同的程序包,称为datatable,其明确注重大数据支持、高性能、内存外存数据集以及多线程算法。某种程度上来说,这个也可以称为data.table的年轻同胞。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003EDatatable\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F5380b12645fb4f1c829e19bedc2cab2d\" img_width=\"202\" img_height=\"177\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E现代机器学习应用需要处理巨大数量的数据并生成多个功能。为了构建更精确的模型,这是必需的。Python的datatable模块正是为了应对这种类问题而创建的。这就相当于是一个在单节机器上以尽可能最大的速度运行大数据(达100GB)的工具包。datatable由H2O.ai 出资开发,其首个使用者是 Driverless.ai。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E此工具箱与panda非常相似,但更侧重于速度和大数据支持。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003EPythondatatable也力求用户良好体验,反馈错误信息,拥有强大的API(应用程序编程接口)。通过本文,可以了解如何使用此datatable以及其用于大数据时是如何优于pandas的。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E安装\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E在MacOs中,datatable可简单地利用pip进行安装:\u003C\u002Fp\u003E\u003Cpre\u003Epip install datatable\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E在Linux中,利用二进制发行版,就可以实现安装,如下所示:\u003C\u002Fp\u003E\u003Cpre\u003E# If you have Python 3.5\u003Cbr\u003Epip install https:\u002F\u002Fs3.amazonaws.com\u002Fh2o-release\u002Fdatatable\u002Fstable\u002Fdatatable-0.8.0\u002Fdatatable-0.8.0-cp35-cp35m-linux_x86_64.whl\u003Cbr\u003E\u003Cbr\u003E# If you have Python 3.6\u003Cbr\u003Epip install https:\u002F\u002Fs3.amazonaws.com\u002Fh2o-release\u002Fdatatable\u002Fstable\u002Fdatatable-0.8.0\u002Fdatatable-0.8.0-cp36-cp36m-linux_x86_64.whl\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E目前,datatable还未能运用于Windows,但是其也正在实现对Windows的支持。\u003C\u002Fp\u003E\u003Cpre\u003EGithub Repository传送门:https:\u002F\u002Fgithub.com\u002Fparulnith\u002FAn-Overview-of-Python-s-Datatable-package\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E读取数据\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E使用的数据集来自于Kaggle网,属于Lending Club Loan DataDataset。此数据集是2007——2015年所有发布的贷款信息中完整的贷款数据,包括当前贷款状况(当前、滞后、全部付清等)以及最想念付款信息。此文件包含226万行,145列。数据规模是datatable库性能的最理想说明。\u003C\u002Fp\u003E\u003Cpre\u003E# Importing necessary Libraries\u003Cbr\u003E \u003Cbr\u003Eimport numpy as np\u003Cbr\u003Eimport pandas as pd\u003Cbr\u003Eimport datatable as dt\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E将数据加载到Frame对象中。datatable的基本分析单元就是一个Frame,这和pandas 的DataFrame 或 SQL 表是相同的概念:数据排列成具有行和列的二维数组。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E利用datatable\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Edatatable_df = dt.fread(\"data.csv\")\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 30 s, sys: 3.39 s, total: 33.4 s \u003Cbr\u003EWall time: 23.6 s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E上述fread() 函数不仅功能强大,而且速度极快。其可自动删除和分析绝大多数文本文件、.zip压缩文档中的下载数据或URLs、读取Excel文件以及其他文件。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E不仅如此,datatable分析程序还有以下功能:\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E· 可以自动删除分隔符、页眉、列类型以及引号规则等。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E· 可以多源读取数据,包括包括文件、URL、shell、原始文本、存档和glob。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E· 极速多线程文件读取。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E· 显示读取文件的进度条。\u003C\u002Fp\u003E\u003Cp\u003E· 可以读取 RFC4180相容型及非相容型文件。(传送门:https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc4180)\u003C\u002Fp\u003E\u003Cp\u003E利用pandas\u003C\u002Fp\u003E\u003Cp\u003E现在,计算一下利用pandas来读取相同文件所用的时间。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Epandas_df= pd.read_csv(\"data.csv\")\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 47.5 s, sys: 12.1 s, total: 59.6 s\u003Cbr\u003EWall time: 1min 4s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E结果显示,datatable在读取大数据集时优于pandas。因为都i相同数据时,pandas读取时间超过了一分钟,而datatable则只使用了数秒。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003EFrame转换\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E现有的Frame还可以如下所示转化为numpy或dateframe。\u003C\u002Fp\u003E\u003Cpre\u003Enumpy_df = datatable_df.to_numpy()\u003Cbr\u003Epandas_df = datatable_df.to_pandas()\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E现在将现有frame转化为pandas的dataframe对象那个,对比所用时间。\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Edatatable_pandas = datatable_df.to_pandas()\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 17.1 s, sys: 4 s, total: 21.1 s\u003Cbr\u003EWall time: 21.4 s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E看来将文件读取为datatable框架,然后将其转换为panda的dataframe所需的时间比直接利用pandas的dataframe读取文件所需的时间要少。所以,通过datatable导入一个大数据文件,然后将其转换为panda的dataframe,这似乎是一个好主意。\u003C\u002Fp\u003E\u003Cpre\u003Etype(datatable_pandas)\u003Cbr\u003E__________________________________\u003Cbr\u003Epandas.core.frame.DataFrame\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E基础Frame属性\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E一起来看看与pandas性能相似的datatable fame的基础性能。\u003C\u002Fp\u003E\u003Cpre\u003Eprint(datatable_df.shape) # (nrows, ncols)\u003Cbr\u003Eprint(datatable_df.names[:5]) # top 5 column names\u003Cbr\u003Eprint(datatable_df.stypes[:5]) # column types(top 5)\u003Cbr\u003E__________________________________\u003Cbr\u003E(2260668, 145)\u003Cbr\u003E('id', 'member_id', 'loan_amnt', 'funded_amnt', 'funded_amnt_inv')\u003Cbr\u003E(stype.bool8, stype.bool8, stype.int32, stype.int32, stype.float64)\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E也可利用head 指令输出靠前的“n”行。\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df.head(10)\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F0ff72486c5ae4c11ad57ac6a00b6eb10\" img_width=\"598\" img_height=\"312\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003Edatatableframe中前10行略表\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E颜色表示数据类型。其中,红色表示字符串,绿色表示整数,蓝色则代表浮动。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E汇总统计信息\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E在panda中计算汇总统计信息是一个消耗内存的过程,但在datatable中就不是如此了。下面每列汇总信息均可通过datatable来计算:\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df.sum() datatable_df.nunique()\u003Cbr\u003Edatatable_df.sd() datatable_df.max()\u003Cbr\u003Edatatable_df.mode() datatable_df.min()\u003Cbr\u003Edatatable_df.nmodal() datatable_df.mean()\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E利用datatable和pandas来计算平均值,测量各所需计算时间之间的差异。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E利用datatable\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Edatatable_df.mean()\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 5.11 s, sys: 51.8 ms, total: 5.16 s\u003Cbr\u003EWall time: 1.43 s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E利用pandas\u003C\u002Fp\u003E\u003Cpre\u003Epandas_df.mean()\u003Cbr\u003E__________________________________\u003Cbr\u003EThrows memory error.\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E上述指令在pandas中未能实现,因为其在开始就显示内存错误。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E数据操作\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E像dataframe这类数据表是柱状数据结构。在datatable中,所有操作最基础的媒介就是方括号符号,即传统矩阵索引,只不过其具备更多的功能。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F30ff0c5e18ed4890bd12ccd4d78f81db\" img_width=\"616\" img_height=\"298\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003Edatatable中的方括号符号\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E在指数矩阵、C\u002FC++, R, pandas, numpy等数学运算中利用相同的DT[i, j]符号。来看看如何利用datatable执行常见的数据操作活动:\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#选择行\u002F列子集\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E下列代码从数据集中选择所有的行及 funded_amnt列。\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df[:,'funded_amnt']\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F8152a4bd41274e02af8e2e61f62e966b\" img_width=\"112\" img_height=\"351\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E这里展示了是如何选取5行及3列的。\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df[:5,:3]\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F0e712e800bae41b09772af1cb81f0fc2\" img_width=\"160\" img_height=\"140\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Frame排序\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E利用datatable\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E通过datatable完成利用特定列队frame的排序,如下所示:\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Edatatable_df.sort('funded_amnt_inv')\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 534 ms, sys: 67.9 ms, total: 602 ms\u003Cbr\u003EWall time: 179 ms\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E利用pandas\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Epandas_df.sort_values(by = 'funded_amnt_inv')\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 8.76 s, sys: 2.87 s, total: 11.6 s\u003Cbr\u003EWall time: 12.4 s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E关注datatable和pandas大量的时间差异。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#删除行\u002F列\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E这里阐述了如何删除名为member_id的列:\u003C\u002Fp\u003E\u003Cpre\u003Edel datatable_df[:, 'member_id']\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#分组\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E就像在pandas中的一样,datatable也有分组功能。来看看如何利用grade列来对funded_amount列平均值进行分组。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E利用datatable\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cpre\u003E%%time\u003Cbr\u003Efor i in range(100):\u003Cbr\u003E pandas_df.groupby(\"grade\")[\"funded_amnt\"].sum()\u003Cbr\u003E__________________________________\u003Cbr\u003ECPU times: user 12.9 s, sys: 859 ms, total: 13.7 s\u003Cbr\u003EWall time: 13.9 s\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E.f代表什么?\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003Ef代表frame proxy,提供一种简单的方法来使用当前操作的Frame。就例子而言,dt.f代表dt_df。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#筛选行\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E \u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E筛选行的句法与分组相似。对loan_amnt的这些行进行筛选,其中,loan_amnt的值大于funded_amnt。\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df[dt.f.loan_amnt>dt.f.funded_amnt,\"loan_amnt\"\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E储存Frame\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F2ce601e62f504f44af03bdfb56bc7d64\" img_width=\"634\" img_height=\"951\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E图片来源:unsplash.com\u002F@pinewatt\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E还可以将Frame的内容写入csv文件,以便将来使用\u003C\u002Fp\u003E\u003Cpre\u003Edatatable_df.to_csv('output.csv')\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003Edocumentation传送门,了解更多操作功能:https:\u002F\u002Fdatatable.readthedocs.io\u002Fen\u002Flatest\u002Fusing-datatable.html\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd49c2407d6c0476db222cce05dc40a99\" img_width=\"800\" img_height=\"88\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-center\"\u003E\u003Cstrong\u003E结论\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E与默认的Panda相比,datatable模块无疑加快了执行速度,这在处理大型数据集时无疑是一个优势所在。然而,datatable在功能方面却落后于Panda。但是,由于仍在积极地开发datatable,将来可能会增加一些库。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F24dce054e7d5478ca756df8e4f2e18c1\" img_width=\"720\" img_height=\"80\" alt=\"好物推荐!Python的datatable程序包概述\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E留言 点赞 关注\u003C\u002Fp\u003E\u003Cp\u003E我们一起分享AI学习与发展的干货\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E欢迎关注全平台AI垂类自媒体 “读芯术”\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E"'.slice(6, -6), groupId: '6718534504933229059
相关文章