-
1 # 52sissi
-
2 # 使用者95877765594
Numpy: 基礎的數學計算模組,以矩陣為主,純數學。
SciPy: 基於Numpy,提供方法(函式庫)直接計算結果,封裝了一些高階抽象和物理模型。比方說做個傅立葉變換,這是純數學的,用Numpy;做個濾波器,這屬於訊號處理模型了,在Scipy裡找。
Pandas: 提供了一套名為DataFrame的資料結構,適合統計分析中的表結構,在上層做資料分析,
更簡潔的說:
NumPy:N維陣列容器
SciPy:科學計算函式庫
Pandas:表格容器
非數學研究,建議直接入手pandas,包含基礎的Numpy方法
Python資料分析學習路線圖Numpy:來儲存和處理大型矩陣,比Python自身的巢狀列表(nested list structure)結構要高效的多,本身是由C語言開發。這個是很基礎的擴充套件,其餘的擴充套件都是以此為基礎。資料結構為ndarray,一般有三種方式來建立。
Pandas:基於NumPy 的一種工具,該工具是為了解決資料分析任務而建立的。Pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。最具有統計意味的工具包,某些方面優於R軟體。資料結構有一維的Series,二維的DataFrame(類似於Excel或者SQL中的表,如果深入學習,會發現Pandas和SQL相似的地方很多,例如merge函式),三維的Panel(Pan(el) + da(ta) + s,知道名字的由來了吧)。
學習Pandas你要掌握的是:1.彙總和計算描述統計,處理缺失資料 ,層次化索引2.清理、轉換、合併、重塑、GroupBy技術3.日期和時間資料型別及工具(日期處理方便地飛起)
Scipy:方便、易於使用、專為科學和工程設計的Python工具包.它包括統計,最佳化,整合,線性代數模組,傅立葉變換,訊號和影象處理,常微分方程求解器等等。基本可以代替Matlab,但是使用的話和資料處理的關係不大,數學系,或者工程系相對用的多一些。近期發現有個statsmodel可以補充scipy.stats,時間序列支援完美
Python免費學習資源推薦
回覆列表
當我們使用Python進行資料分析時,有時可能需要根據DataFrame其他列中的值向pandas DataFrame新增一列。
儘管這聽起來很簡單,但是如果我們嘗試使用if-else條件語句來做,可能會變得有些複雜。值得慶幸的是,有一種使用numpy做到這一點的簡單,好方法!
我們將從匯入pandas和numpy開始,並載入資料集以檢視其外觀。
我們可以看到我們的資料集包含有關每個推文的一些資訊,包括:
1)date —推文釋出的日期
2)time —發推文的時間
3)tweet -該推文的實際文字
4)mentions -推文中提及的任何其他Twitter使用者
5)photos —推文中包含的任何影象的URL
6)replies_count -在推文上的回覆數量
8)likes_count —在推文上的喜歡次數
我們還可以看到photos資料的格式有些奇怪。
使用np.where()新增具有正確/錯誤條件的pandas列
對於我們的分析,我們只想檢視帶有影象的推文是否獲得更多的互動,因此我們實際上不需要影象URL。讓我們嘗試建立一個名為的新列hasimage,該列將包含布林值- True如果該tweet包含影象,False則不包含影象。
為此,我們將使用numpy的內建where()函式。此函式按順序接受三個引數:我們要測試的條件,條件為true時分配給新列的值以及條件為false時分配給新列的值。看起來像這樣:
在我們的資料中,我們可以看到沒有影象的推文始終[]在該photos列中具有值。我們可以使用資訊並np.where()建立新列hasimage,如下所示:
在上方,我們可以看到我們的新列已新增到我們的資料集,並且已正確標記了tweet,其中包括影象為True,其他影象為False。
現在我們有了hasimage專欄,讓我們快速製作幾個新的DataFrame,一個用於所有影象推文,一個用於所有無影象推文。我們將使用布林過濾器進行此操作:
現在,我們已經建立了那些,我們可以使用內建的數學函式.mean()來快速比較每個DataFrame中的推文。
我們將使用print()語句使結果更易於閱讀。我們還需要記住使用str()來將.mean()計算結果轉換為字串,以便可以在我們的列印語句中使用它:
新增條件更復雜的pandas專欄
這種方法效果很好,但是如果我們想新增一個條件更復雜的新列(超出True和False的條件)怎麼辦?
例如,為了更深入地研究這個問題,我們可能要建立一些互動性“層”,並評估到達每個層的推文所佔的百分比。為了簡單起見,讓我們使用Likes來衡量互動性,並將tweet分為四個層次:
1)tier_4 -2個或更少的喜歡
2)tier_3 — 3-9個贊
3)tier_2 — 10-15個贊
4)tier_1 — 16個贊
為此,我們可以使用稱為的函式np.select()。我們給它兩個引數:一個條件列表,以及一個我們想要分配給新列中每一行的值的對應列表。
這意味著順序很重要:如果conditions滿足列表中的第一個條件,則列表中的第一個值values將分配給該行的新列。大資料分析使用numpy在pandas dataframe上新增列https://www.aaa-cg.com.cn/data/2376.html如果滿足第二個條件,則將分配第二個值,等等。
讓我們看一下它在Python程式碼中的外觀:
太棒了!我們建立了另一個新列,該列根據我們的(雖然有些武斷)層排名系統對每個tweet進行了分類。
現在,我們可以使用它來回答有關我們的資料集的更多問題。例如:1級和4級推文中有多少百分比具有影象?
儘管這是一個非常膚淺的分析,但我們已經在這裡實現了我們的真正目標:根據有關現有列中值的條件語句向pandas DataFrames新增列。
當然,這是可以以多種方式完成的任務。np.where()而np.select()只是許多潛在的兩種方法。
https://www.toutiao.com/i6846264263237960204/