python datatable库大型数据集和多核数据处理使用探索
作者:程序员小寒
python datatable库
今天给大家分享一个超强的 python 库,datatable
https://github.com/h2oai/datatable
datatable 是一个用于数据处理和统计分析的 python 库,类似于Pandas,但专注于大型数据集和多核数据处理。它最初由 H2O.ai 开发,设计目标是高效地处理非常大的数据集,特别是那些太大以至于不能放入单个机器的内存中的数据集。
核心特性
性能,datatable 针对性能进行了优化,尤其是在处理大型数据集时。它使用 C++ 编写的底层代码和多线程来加速数据处理任务。
内存效率,通过使用内存映射文件和其他技术,datatable 可以有效地处理大于物理内存大小的数据集。
灵活的数据处理能力,支持各种数据处理操作,包括过滤、排序、分组、联接等。
与Pandas的兼容性,datatable 提供了将其 DataFrame 转换为 Pandas DataFrame 的功能,使得用户可以利用 Pandas 的 API 进行进一步的数据分析和处理。
库的安装
可以直接使用 pip 进行安装。
pip install datatable
读取数据
我们所使用的数据集是贷款数据集,该文件由 226 万行和 145 列组成。
让我们将数据加载到 Frame 对象中。datatable 中分析的基本单位是 Frame。它与 pandas DataFrame 或 SQL 表的概念相同,数据排列在具有行和列的二维数组中。
import pandas as pd import datatable as dt %%time datatable_df = dt.fread("test/accepted_2007_to_2018Q4.csv")
可以看到使用时间是 34.7 秒。
datatable 库的 fread() 函数可以从多个源读取数据,包括文件、URL等等。
现在,让我们计算 pandas 读取同一文件所花费的时间
%%time pandas_df= pd.read_csv("test/accepted_2007_to_2018Q4.csv")
可以看到使用时间是2分 30 秒。
结果表明,在读取大型数据集时,datatable 明显优于 pandas。
帧转换
现有的 Frame 也可以转换为 numpy 或 pandas 数据框,如下所示:
numpy_df = datatable_df.to_numpy() pandas_df = datatable_df.to_pandas()
Frame 属性
让我们看一下 datatable frame 的一些基本属性,它们类似于 pandas 的属性。
print(datatable_df.shape) print(datatable_df.names[:5]) print(datatable_df.stypes[:5])
我们还可以使用 head 命令输出前 'n' 行。
datatable_df.head(10)
统计摘要
在 pandas 中计算统计摘要数据是一个消耗内存的过程,但在 datatable 中则不再如此。
我们可以使用 datatable 计算以下每列摘要统计信息。
datatable_df.mean()
数据处理
以下代码从数据集中选择所有行和 funded_amnt 列。
datatable_df[:,'funded_amnt']
按 funded_amnt_inv 列进行排序。
datatable_df.sort('funded_amnt_inv')
删除名为 member_id 的列。
del datatable_df[:, 'member_id']
就像 pandas 一样,datatable 也具有 groupby 功能。
让我们看看如何获得按 Grade 列分组的 funded_amount 列的平均值。
datatable_df[:, dt.sum(dt.f.funded_amnt), dt.by(dt.f.grade)]
过滤行的语法与 GroupBy 非常相似。让我们过滤 loan_amnt 中 loan_amnt 值大于 funded_amnt 的那些行。
datatable_df[dt.f.loan_amnt>dt.f.funded_amnt,"loan_amnt"]
以上就是python datatable库大型数据集和多核数据处理使用探索的详细内容,更多关于python datatable库的资料请关注脚本之家其它相关文章!