溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何比較Python中的Pandas和data.table

發(fā)布時間:2021-10-09 16:03:13 來源:億速云 閱讀:237 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何比較Python中的Pandas和data.table,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

在這篇文章中,我們將比較Pandas  和data.table,這兩個庫是Python和R最長用的數(shù)據(jù)分析包。我們不會說那個一個更好,我們這里的重點(diǎn)是演示這兩個庫如何為數(shù)據(jù)處理提供高效和靈活的方法。

我們將介紹的示例是常見的數(shù)據(jù)分析和操作操作。因此,您可能會經(jīng)常使用它們。

我們將使用Kaggle上提供的墨爾本住房數(shù)據(jù)集作為示例。我將使用谷歌Colab(Pandas  )和RStudio(data.table)作為開環(huán)境。讓我們首先導(dǎo)入庫并讀取數(shù)據(jù)集。

# pandas  import pandas as pd  melb = pd.read_csv("/content/melb_data.csv")   # data.table  library(data.table)  melb <- fread("datasets/melb_data.csv")

示例1

第一個示例是關(guān)于基于數(shù)據(jù)集中的現(xiàn)有列創(chuàng)建新列。這是特征工程過程中常見的操作。這兩個庫都提供了完成此任務(wù)的簡單方法。

# pandas  melb["Price_per_area"] = melb["Price"] / melb["Landsize"]   # data.table  melb[, Price_per_area := Price / Landsize]
如何比較Python中的Pandas和data.table

示例2

對于第二個示例,我們通過應(yīng)用幾個過濾器創(chuàng)建原始數(shù)據(jù)集的子集。這個子集包括價值超過100萬美元,類型為h的房子。

# pandas  subset = melb[(melb.Price > 1000000) & (melb.Type == "h")]   # data.table  subset <- melb[Price > 1000000 & Type == "h"]

對于pandas,我們提供dataframe的名稱來選擇用于過濾的列。另一方面,data.table僅使用列名就足夠了。

示例3

在數(shù)據(jù)分析中使用的一個非常常見的函數(shù)是groupby函數(shù)。它允許基于一些數(shù)值度量比較分類變量中的不同值。

例如,我們可以計(jì)算出不同地區(qū)的平均房價。為了使示例更復(fù)雜一些,我們還對房子類型應(yīng)用一個過濾器。

# pandas  melb[melb.Type == "u"].groupby("Regionname").agg(  avg_price = ("Price", "mean")  )   # data.table  melb[Type == "u", .(avg_price = mean(Price)), by="Regionname"]
如何比較Python中的Pandas和data.table

pandas使用groupby函數(shù)執(zhí)行這些操作。對于data.table,此操作相對簡單一些,因?yàn)槲覀冎恍枰褂胋y參數(shù)即可。

示例4

讓我們進(jìn)一步討論前面的例子。我們求出了房屋的平均價格,但不知道每個地區(qū)的房屋數(shù)量。

這兩個庫都允許在一個操作中應(yīng)用多個聚合。我們還可以按升序或降序?qū)Y(jié)果進(jìn)行排序。

# pandas  melb[melb.Type == "u"].groupby("Regionname").agg(  avg_price = ("Price", "mean"),  number_of_houses = ("Price", "count")  ).sort_values(by="avg_price", ascending=False)   # data.table  > melb[  Type == "u",  .(avg_price = mean(Price), number_of_houses=.N),  by="Regionname"  ][order(-avg_price)]
如何比較Python中的Pandas和data.table

我們使用計(jì)數(shù)函數(shù)來獲得每組房屋的數(shù)量。”。N”可作為data.table中的count函數(shù)。

默認(rèn)情況下,這兩個庫都按升序?qū)Y(jié)果排序。排序規(guī)則在pandas中的ascending參數(shù)控制。 data.table中使用減號獲得降序結(jié)果。

示例5

在最后一個示例中,我們將看到如何更改列名。例如,我們可以更改類型和距離列的名稱。

類型:HouseType

距離:DistanceCBD

數(shù)據(jù)集中的distance列表示到中央商務(wù)區(qū)(CBD)的距離,因此最好在列名中提供該信息。

# pandas  melb.rename(columns={"Type": "HouseType",  "Distance": "DistanceCBD"},  inplace=True)   # data.table  setnames(melb,  c("Type", "Distance"),  c("HouseType", "DistanceCBD"))

對于熊貓,我們傳遞了一個字典,該字典將更改映射到rename函數(shù)。 inplace參數(shù)用于將結(jié)果保存在原始數(shù)據(jù)幀中。

對于data.table,我們使用setnames函數(shù)。 它使用三個參數(shù),分別是表名,要更改的列名和新列名。


我們比較了pandas和data.table在數(shù)據(jù)分析操作過程中常見的5個示例。這兩個庫都提供了簡單有效的方法來完成這些任務(wù)。

在我看來,data.table比pandas簡單一點(diǎn)。

需要指出的是,我們在本文中所做的示例只代表了這些庫功能的很小一部分。它們提供了許多函數(shù)和方法來執(zhí)行更復(fù)雜的操作。

上述內(nèi)容就是如何比較Python中的Pandas和data.table,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI