好物推薦!Python的datatable程序包概述

2021-01-11 讀芯術

全文共5270字,預計學習時長11分鐘或更長

圖片來源:pexels.com/@divinetechygir

從文明之初到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.5

pip install

# If you have Python 3.6pip install

目前,datatable還未能運用於Windows,但是其也正在實現對Windows的支持。

讀取數據

使用的數據集來自於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

%%time

datatable_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相容型及非相容型文件。

利用pandas

現在,計算一下利用pandas來讀取相同文件所用的時間。

%%time

pandas_df= pd.read_csv("data.csv")

__________________________________

CPU times: user 47.5 s, sys: 12.1 s, total: 59.6 s

Wall time: 1min 4s

結果顯示,datatable在讀取大數據集時優於pandas。因為都i相同數據時,pandas讀取時間超過了一分鐘,而datatable則只使用了數秒。

Frame轉換

現有的Frame還可以如下所示轉化為numpy或dateframe。

numpy_df = datatable_df.to_numpy()pandas_df = datatable_df.to_pandas()

現在將現有frame轉化為pandas的dataframe對象那個,對比所用時間。

%%time

datatable_pandas = datatable_df.to_pandas()

__________________________________

CPU times: user 17.1 s, sys: 4 s, total: 21.1 s

Wall time: 21.4 s

看來將文件讀取為datatable框架,然後將其轉換為panda的dataframe所需的時間比直接利用pandas的dataframe讀取文件所需的時間要少。所以,通過datatable導入一個大數據文件,然後將其轉換為panda的dataframe,這似乎是一個好主意。

type(datatable_pandas)

__________________________________

pandas.core.frame.DataFrame

基礎Frame屬性

一起來看看與pandas性能相似的datatable fame的基礎性能。

print(datatable_df.shape) # (nrows, ncols)

print(datatable_df.names[:5]) # top 5 column names

print(datatable_df.stypes[:5]) # column types(top 5)

__________________________________

(2260668, 145)

('id', 'member_id', 'loan_amnt', 'funded_amnt', 'funded_amnt_inv')

(stype.bool8, stype.bool8, stype.int32, stype.int32, stype.float64)

也可利用head 指令輸出靠前的「n」行。

datatable_df.head(10)

datatableframe中前10行略表

顏色表示數據類型。其中,紅色表示字符串,綠色表示整數,藍色則代表浮動。

匯總統計信息

在panda中計算匯總統計信息是一個消耗內存的過程,但在datatable中就不是如此了。下面每列匯總信息均可通過datatable來計算:

datatable_df.sum() datatable_df.nunique()datatable_df.sd() datatable_df.max()datatable_df.mode() datatable_df.min()datatable_df.nmodal() datatable_df.mean()

利用datatable和pandas來計算平均值,測量各所需計算時間之間的差異。

利用datatable

%%time

datatable_df.mean()

__________________________________

CPU times: user 5.11 s, sys: 51.8 ms, total: 5.16 s

Wall time: 1.43 s

利用pandas

pandas_df.mean()

__________________________________

Throws memory error.

上述指令在pandas中未能實現,因為其在開始就顯示內存錯誤。

數據操作

像dataframe這類數據表是柱狀數據結構。在datatable中,所有操作最基礎的媒介就是方括號符號,即傳統矩陣索引,只不過其具備更多的功能。

datatable中的方括號符號

在指數矩陣、C/C++, R, pandas, numpy等數學運算中利用相同的DT[i, j]符號。來看看如何利用datatable執行常見的數據操作活動:

#選擇行/列子集

下列代碼從數據集中選擇所有的行及 funded_amnt列。

datatable_df[:,'funded_amnt']

這裡展示了是如何選取5行及3列的。

datatable_df[:5,:3]

#Frame排序

利用datatable

通過datatable完成利用特定列隊frame的排序,如下所示:

%%timedatatable_df.sort('funded_amnt_inv')__________________________________CPU times: user 534 ms, sys: 67.9 ms, total: 602 msWall time: 179 ms

利用pandas

%%time

pandas_df.sort_values(by = 'funded_amnt_inv')__________________________________CPU times: user 8.76 s, sys: 2.87 s, total: 11.6 sWall time: 12.4 s

關注datatable和pandas大量的時間差異。

#刪除行/列

這裡闡述了如何刪除名為member_id的列:

del datatable_df[:, 'member_id']

#分組

就像在pandas中的一樣,datatable也有分組功能。來看看如何利用grade列來對funded_amount列平均值進行分組。

利用datatable

%%timefor i in range(100):pandas_df.groupby("grade")["funded_amnt"].sum()__________________________________CPU times: user 12.9 s, sys: 859 ms, total: 13.7 sWall time: 13.9 s

.f代表什麼?

f代表frame proxy,提供一種簡單的方法來使用當前操作的Frame。就例子而言,dt.f代表dt_df。

#篩選行

篩選行的句法與分組相似。對loan_amnt的這些行進行篩選,其中,loan_amnt的值大於funded_amnt。

datatable_df[dt.f.loan_amnt>dt.f.funded_amnt,"loan_amnt"

儲存Frame

圖片來源:unsplash.com/@pinewatt

還可以將Frame的內容寫入csv文件,以便將來使用

datatable_df.to_csv('output.csv')

結論

與默認的Panda相比,datatable模塊無疑加快了執行速度,這在處理大型數據集時無疑是一個優勢所在。然而,datatable在功能方面卻落後於Panda。但是,由於仍在積極地開發datatable,將來可能會增加一些庫。

留言 點讚 關注我們一起分享AI學習與發展的乾貨歡迎關注全平臺AI垂類自媒體 「讀芯術」

相關焦點

  • 成都學習Python開發哪家好
    如何選擇成都python培訓機構? python程式語言語法清晰、乾淨、易讀、易維護、代碼量小、可讀性強。當團隊合作開發時,閱讀別人的代碼將是非常迅速和高效的。通俗說來就是「寫起來快、看起來明白!」所以近年來,python開發非常流行。
  • Python為什麼這麼火?小孩子適合學習python編程嗎?
    YouTube、Instagram、豆瓣、知乎、果殼等都是用python寫的,意不意外?驚不驚喜?除了C端應用之外,Python還有著最為成熟的程序包資源庫之一PyPI,這個資源庫包含著超過85000個腳本資源與模塊,上手就能用,同時python具有獨特的開源且跨平臺特性,不管是windows、macOS還是Linux,Python都可以輕鬆運行,配置環境過程也無比簡單。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    字符串居中對齊.mov 4-6 去掉不需要的字符.mov 5-1 如何讀取文本文件.mov 5-2如何處理二進位文件.mov 5-3 4文件映射.mov 5-5 如何訪問文件的狀態.mov 5-6 如何使用臨時文件.mov 3.數據分析與挖掘 1-1課程導學 1-2 數據分析概述
  • Python2 倒計時,還不快來掌握 Python3 酷炫的新特性?|原力計劃
    下面這篇文章,我會給大家推薦3.0版本依賴最最新潮的函數和語法,讓你們能夠在Review代碼時候「脫穎而出」!下面我們對比同一案例的新舊兩個版本Python的實現:from glob import globfile_contents = []for filename in glob('**/*.py', recursive=True):with open(filename) as python_file: file_contents.append(python_file.read
  • Python「第一節」-製作自己的pip安裝包
    /usr/bin/env pythonfrom setuptools import setup, find_packagessetup( name = 'lgplibdemo', version = '0.0.3', description = 'library ', long_description = 'library ', author = 'ligaopan', author_email =
  • 好程式設計師Python培訓分享numpy簡介
    好程式設計師Python培訓分享numpy簡介:一、numpy簡介:NumPy是一個功能強大的Python庫,主要用於對多維數組執行計算。NumPy這個詞來源於兩個單詞-- Numerical和Python。NumPy提供了大量的庫函數和操作,可以幫助程式設計師輕鬆地進行數值計算。
  • 代碼詳解:Python虛擬環境的原理及使用
    虛擬環境為一系列潛在問題提供簡單的解決方案,尤其是在以下幾個方面:· 允許不同的項目使用不同版本的程序包,從而解決依賴性問題。例如,可以將Project A v2.7用於Project X,並將Package A v1.3用於Project Y。· 通過捕獲需求文件中的所有包依賴項,使項目自包含且可重現。
  • 試試知乎好物推薦就明白了
    戰報顯示,今年雙十一期間,知乎「好物推薦」帶貨內容閱讀量突破8億。相比618,雙十一大促期間GMV實現翻倍,訂單量提升了113%。對比單日數據,11月11日當天「好物推薦」訂單量達到6月18日的3.2倍,GMV實現113%的增長。
  • python環境配置簡要流程
    import keras 驗證 9、安裝talib 首先下載talib,選擇好自己對應的版本 https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib 進行下載,下載的位置不要包含中文
  • 《家鄉好物》青州好物上新!杜兜王曉龍說學逗唱推薦山楂製品
    本期節目由王曉龍、李樂聯袂主持,山東省青州市農業農村局副局長陳玉興擔任「好物推薦人」,大廚夏天、演員杜兜、宋鈺盈將作為助力團花式曬貨。目前,《家鄉好物》已納入山東省「優質魯貨與電商平臺對接工程」,成為第一批主要活動之一。信美青州千年古韻人傑地靈,自然好物上新開啟幸福生活幽幽九州,海岱惟青。
  • windows上python開發環境的搭建
    對於C,C++, java等靜態性語言而言,需要通過IDE(集成開發環境)來便利開發過程;對於perl, python這種動態性語言而言,其開發環境的搭建就顯得簡單多了,只需要安裝好對應的解釋器,以及選擇一個順手的編輯器即可。
  • 愛否編輯部年終好物推薦
    由於疫情的緣故,今年我否同事們的消費都比較小心謹慎,但是我們還是有些好的產品想要推薦給你們。有些是電子產品,有些則是日常用品,希望能夠幫到你們。本文所有產品均沒有任何廣告成分,無任何利益關係,請大家放心閱讀。
  • 成都Python培訓周期多久
    成都python培訓哪個更專業? Python的設計目標之一是使代碼具有很高的可讀性。它被設計成使用標點符號和其他語言中常用的英語單詞,使代碼看起來整潔美觀。現在成都有很多python培訓學校。
  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。但是對於plotly來說的話,我們直接可以用python來寫,並且代碼量比java的少很多,我們可以直接將我們熟悉的python list, numpy, pandas放進去就可以畫圖,並且給出的效果和echart的圖一摸一樣。另外要提一點的是python plotly也是可以用來做動圖的,我們後面會給大家介紹一種用plolty做出來的用於展示Kmeans算法過程的動圖。
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    話說在金融和IT行當混跡了多年,python一直是被我隨手拿來當個小工具用用,有時候偷懶用python弄個excel自動化整理工具,有時候拿來上各種網站爬蟲搜集點信息,有時候也會拿來寫點量化小工具。那麼到底什麼是python?
  • 身邊好物|傳統中醫推薦的泡腳秘密,母親節身邊好禮物之足浴盆篇
    昨天給大家推薦的母親節禮物之乳膠枕,各平臺的朋友在私信或者點評裡告訴我,推薦的產品過於單一,或者媽媽確實不喜歡過於局限性,讓再推薦些其他東西,適合送給母親或者家裡老人的,所有就有了這一期。不知道大家有沒有注意到,父母隨著年齡增大,會越來越注重養生,特別是朋友圈裡的各種養生文章,所有這一期,給大家推薦的身邊好物不僅適合父母,也是我們日常生活中家裡可以有的中式養生神器,泡腳桶。中國傳統醫學認為,足浴發汗療術是非常好的理療和保健方法,中醫專家研究表明,成年人每天用熱水泡腳,可以對心臟及內臟器官的健康起到非常好的作用。
  • 海南好物亮相2020魔筷年貨節 超級主播現身推薦
    播放暫停進入全屏退出全屏00:0000:00 重播 請刷新試試新海南客戶端、南海網、南國都市報1月6日消息(記者 張宏波)1月5日,在海南電子商務直播嘉年華系列活動——2020魔筷年貨節「好物推薦官直播專場」活動中,快手超級主播陳先生在直播間推介了來自全國的年貨以及春光、南國等海南的好物
  • 一文概述用 python 的 scikit-image 模塊進行圖像分割
    近日,工程師 Parul Pandey 發表了一篇博文,在博文中,她介紹了用 python 的 scikit-image 庫進行圖像分割的方法。具體涉及 scikit-image 的安裝,圖像導入以及用監督算法和無監督算法進行圖像分割的方法。雷鋒網 AI 科技評論編譯整理如下。