您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何比較Python中的Pandas和data.table,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在這篇文章中,我們將比較Pandas 和data.table,這兩個庫是Python和R最長用的數據分析包。我們不會說那個一個更好,我們這里的重點是演示這兩個庫如何為數據處理提供高效和靈活的方法。
我們將介紹的示例是常見的數據分析和操作操作。因此,您可能會經常使用它們。
我們將使用Kaggle上提供的墨爾本住房數據集作為示例。我將使用谷歌Colab(Pandas )和RStudio(data.table)作為開環境。讓我們首先導入庫并讀取數據集。
# pandas import pandas as pd melb = pd.read_csv("/content/melb_data.csv") # data.table library(data.table) melb <- fread("datasets/melb_data.csv")
第一個示例是關于基于數據集中的現有列創建新列。這是特征工程過程中常見的操作。這兩個庫都提供了完成此任務的簡單方法。
# pandas melb["Price_per_area"] = melb["Price"] / melb["Landsize"] # data.table melb[, Price_per_area := Price / Landsize]
對于第二個示例,我們通過應用幾個過濾器創建原始數據集的子集。這個子集包括價值超過100萬美元,類型為h的房子。
# pandas subset = melb[(melb.Price > 1000000) & (melb.Type == "h")] # data.table subset <- melb[Price > 1000000 & Type == "h"]
對于pandas,我們提供dataframe的名稱來選擇用于過濾的列。另一方面,data.table僅使用列名就足夠了。
在數據分析中使用的一個非常常見的函數是groupby函數。它允許基于一些數值度量比較分類變量中的不同值。
例如,我們可以計算出不同地區的平均房價。為了使示例更復雜一些,我們還對房子類型應用一個過濾器。
# pandas melb[melb.Type == "u"].groupby("Regionname").agg( avg_price = ("Price", "mean") ) # data.table melb[Type == "u", .(avg_price = mean(Price)), by="Regionname"]
pandas使用groupby函數執行這些操作。對于data.table,此操作相對簡單一些,因為我們只需要使用by參數即可。
讓我們進一步討論前面的例子。我們求出了房屋的平均價格,但不知道每個地區的房屋數量。
這兩個庫都允許在一個操作中應用多個聚合。我們還可以按升序或降序對結果進行排序。
# 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)]
我們使用計數函數來獲得每組房屋的數量。”。N”可作為data.table中的count函數。
默認情況下,這兩個庫都按升序對結果排序。排序規則在pandas中的ascending參數控制。 data.table中使用減號獲得降序結果。
在最后一個示例中,我們將看到如何更改列名。例如,我們可以更改類型和距離列的名稱。
類型:HouseType
距離:DistanceCBD
數據集中的distance列表示到中央商務區(CBD)的距離,因此最好在列名中提供該信息。
# pandas melb.rename(columns={"Type": "HouseType", "Distance": "DistanceCBD"}, inplace=True) # data.table setnames(melb, c("Type", "Distance"), c("HouseType", "DistanceCBD"))
對于熊貓,我們傳遞了一個字典,該字典將更改映射到rename函數。 inplace參數用于將結果保存在原始數據幀中。
對于data.table,我們使用setnames函數。 它使用三個參數,分別是表名,要更改的列名和新列名。
我們比較了pandas和data.table在數據分析操作過程中常見的5個示例。這兩個庫都提供了簡單有效的方法來完成這些任務。
在我看來,data.table比pandas簡單一點。
需要指出的是,我們在本文中所做的示例只代表了這些庫功能的很小一部分。它們提供了許多函數和方法來執行更復雜的操作。
上述內容就是如何比較Python中的Pandas和data.table,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。