python datatable庫大型數(shù)據(jù)集和多核數(shù)據(jù)處理使用探索
python datatable庫
今天給大家分享一個超強的 python 庫,datatable
https://github.com/h2oai/datatable
datatable 是一個用于數(shù)據(jù)處理和統(tǒng)計分析的 python 庫,類似于Pandas,但專注于大型數(shù)據(jù)集和多核數(shù)據(jù)處理。它最初由 H2O.ai 開發(fā),設計目標是高效地處理非常大的數(shù)據(jù)集,特別是那些太大以至于不能放入單個機器的內(nèi)存中的數(shù)據(jù)集。
核心特性
性能,datatable 針對性能進行了優(yōu)化,尤其是在處理大型數(shù)據(jù)集時。它使用 C++ 編寫的底層代碼和多線程來加速數(shù)據(jù)處理任務。
內(nèi)存效率,通過使用內(nèi)存映射文件和其他技術(shù),datatable 可以有效地處理大于物理內(nèi)存大小的數(shù)據(jù)集。
靈活的數(shù)據(jù)處理能力,支持各種數(shù)據(jù)處理操作,包括過濾、排序、分組、聯(lián)接等。
與Pandas的兼容性,datatable 提供了將其 DataFrame 轉(zhuǎn)換為 Pandas DataFrame 的功能,使得用戶可以利用 Pandas 的 API 進行進一步的數(shù)據(jù)分析和處理。
庫的安裝
可以直接使用 pip 進行安裝。
pip install datatable
讀取數(shù)據(jù)
我們所使用的數(shù)據(jù)集是貸款數(shù)據(jù)集,該文件由 226 萬行和 145 列組成。
讓我們將數(shù)據(jù)加載到 Frame 對象中。datatable 中分析的基本單位是 Frame。它與 pandas DataFrame 或 SQL 表的概念相同,數(shù)據(jù)排列在具有行和列的二維數(shù)組中。
import pandas as pd import datatable as dt %%time datatable_df = dt.fread("test/accepted_2007_to_2018Q4.csv")
可以看到使用時間是 34.7 秒。
datatable 庫的 fread() 函數(shù)可以從多個源讀取數(shù)據(jù),包括文件、URL等等。
現(xiàn)在,讓我們計算 pandas 讀取同一文件所花費的時間
%%time pandas_df= pd.read_csv("test/accepted_2007_to_2018Q4.csv")
可以看到使用時間是2分 30 秒。
結(jié)果表明,在讀取大型數(shù)據(jù)集時,datatable 明顯優(yōu)于 pandas。
幀轉(zhuǎn)換
現(xiàn)有的 Frame 也可以轉(zhuǎn)換為 numpy 或 pandas 數(shù)據(jù)框,如下所示:
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)
統(tǒng)計摘要
在 pandas 中計算統(tǒng)計摘要數(shù)據(jù)是一個消耗內(nèi)存的過程,但在 datatable 中則不再如此。
我們可以使用 datatable 計算以下每列摘要統(tǒng)計信息。
datatable_df.mean()
數(shù)據(jù)處理
以下代碼從數(shù)據(jù)集中選擇所有行和 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庫大型數(shù)據(jù)集和多核數(shù)據(jù)處理使用探索的詳細內(nèi)容,更多關(guān)于python datatable庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python json.dumps() json.dump()的區(qū)別詳解
這篇文章主要介紹了python json.dumps() json.dump()的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解
這篇文章主要介紹了python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法,結(jié)合實例形式分析了Python mysql操作庫pymysql、sqlalchemy基本使用技巧與操作注意事項,需要的朋友可以參考下2020-03-03Django視圖之ORM數(shù)據(jù)庫查詢操作API的實例
下面小編就為大家?guī)硪黄狣jango視圖之ORM數(shù)據(jù)庫查詢操作API的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10Python+SimpleRNN實現(xiàn)股票預測詳解
這篇文章主要為大家詳細介紹了如何利用Python和SimpleRNN實現(xiàn)股票預測效果,文中的示例代碼講解詳細,對我們學習有一定幫助,需要的可以參考一下2022-05-05