日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

從文明之初到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程序包概述

 

 

 

現代機器學習應用需要處理巨大數量的數據并生成多個功能。為了構建更精確的模型,這是必需的。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 https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp35-cp35m-linux_x86_64.whl

# If you have Python 3.6
pip install https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp36-cp36m-linux_x86_64.whl

 

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

Github Repository傳送門:https://github.com/parulnith/An-Overview-of-Python-s-Datatable-package

 

讀取數據

 

使用的數據集來自于Kaggle網,屬于Lending Club Loan DataDataset。此數據集是2007——2015年所有發布的貸款信息中完整的貸款數據,包括當前貸款狀況(當前、滯后、全部付清等)以及最想念付款信息。此文件包含226萬行,145列。數據規模是datatable庫性能的最理想說明。

# Importing necessary Libraries
 
import numpy as np
import pandas as pd
import 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相容型及非相容型文件。(傳送門:https://tools.ietf.org/html/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)

 

墻裂推薦!Python的datatable程序包概述

 

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中,所有操作最基礎的媒介就是方括號符號,即傳統矩陣索引,只不過其具備更多的功能。

 

墻裂推薦!Python的datatable程序包概述

 

 

datatable中的方括號符號

 

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

#選擇行/列子集

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

datatable_df[:,'funded_amnt']

 

 

墻裂推薦!Python的datatable程序包概述

 

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

datatable_df[:5,:3]

 

墻裂推薦!Python的datatable程序包概述

 

 

 

#Frame排序

利用datatable

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

%%time
datatable_df.sort('funded_amnt_inv')
__________________________________
CPU times: user 534 ms, sys: 67.9 ms, total: 602 ms
Wall 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 s
Wall time: 12.4 s

 

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

#刪除行/列

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

del datatable_df[:, 'member_id']

 

#分組

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

利用datatable

%%time
for i in range(100):
 pandas_df.groupby("grade")["funded_amnt"].sum()
__________________________________
CPU times: user 12.9 s, sys: 859 ms, total: 13.7 s
Wall 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

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

datatable_df.to_csv('output.csv')

documentation傳送門,了解更多操作功能:https://datatable.readthedocs.io/en/latest/using-datatable.html

 

結論

 

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

 

分享到:
標簽:datatable
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定