python datatable库大型数据集和多核数据处理使用探索

 更新时间:2024年01月30日 11:01:51   作者:程序员小寒  
这篇文章主要介绍了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库的资料请关注脚本之家其它相关文章!

相关文章

最新评论