摘要:提供了使我們能夠快速便捷地處理結構化數據的大量數據結構和函數。結構化數據,例如多維數據矩陣表格行數據,其中各列可能是不同的類型字符串數值日期等。基礎數組和矢量計算高性能科學計算和數據分析的基礎包。
本篇內容為整理《利用Python進行數據分析》,博主使用代碼為 Python3,部分內容和書本有出入。
利用 Python 進行科學計算的實用指南。本書重點介紹了用于高效解決各種數據分析問題的 Python 語言和庫,沒有闡述如何利用 Python 實現具體的分析方法。重要的Python庫
NumPy
NumPy (Numerical Python)是 Python 科學計算的基礎包。
pandas
pandas 提供了使我們能夠快速便捷地處理結構化數據的大量數據結構和函數。
結構化數據 (structured data),例如: · 多維數據(矩陣) · 表格行數據,其中各列可能是不同的類型(字符串、數值、日期等)。 · 通過關鍵列相互聯系的多個表(關鍵列:對于 SQL 用戶而言,即主鍵和外鍵)。 · 間隔平均或不平均的時間序列。
matplotlib
matplotlib 是最流行的用于繪制數據圖表的 Python 庫。
SciPy
SciPy 是一組專門解決科學計算中各種標準問題域的包的集合。
NUmPy (Numerical Python)——高性能科學計算和數據分析的基礎包。
你可以用這種數組對整塊數據執行一些數學運算,其語法跟標量元素之間的運算一樣。創建并操作多維數組:
ndarray對象中所有元素必須是相同類型的,每個數組都有一個shape和dtype。
shape :表示各維度大小的元組
dtype :說明數組數據類型的對象
創建數組最簡單的辦法就是使用 array 函數,它接受一切序列型對象(包括其它數組),然后產生一個新的NumPy數組(含有原來的數據)。
np.array會嘗試為新建的這個數組推斷出一個較為合適的數據類型,這個數據類型保存在一個特殊的dtype對象中。
zeros 和 ones 也分別可以創建指定大小的全 0 或全 1 數組,empty 可以創建一個沒有任何具體值的數組(它返回的都是一些未初始化的垃圾值):
arange是 Python 內置函數range的數組版,np.arange返回間隔均勻的一些值。
ndarray 的數據類型dtype(數據類型)是一個特殊的對象,它含有 ndarray 將一塊內存解釋為特定數據類型所需的信息。
需要知道你所處理的數據的大致類型是浮點數、復數、整數、布爾值、字符串,還是普通的 python 對象。當你需要控制數據在內存和磁盤中的存儲方式時,就得了解如何控制存儲類型。
可通過ndarray的astype方法顯示地轉換其dtype:
若將浮點數轉換成整數,則小數部分將會被截斷。
若某字符串數組表示的全是數字,可用astype將其轉換為數值形式:
這里沒寫 np.float64 只寫了 float,但是NumPy會將 Python 類型映射到等價的dtype上。
數組的dtype的另一個用法:
int_array變成了和calibers一樣的浮點型數組
用簡潔類型的代碼表示dtype:
u4(unit32):無符號的 32 位(4個字節)整型。
調用astype無論如何都會創建出一個新的數組(原始數據的一份拷貝)。
浮點數只能表示近似的分數值,在復雜計算中可能會積累一些浮點錯誤,因此比較操作只在一定小數位以內有效。
數組和標量之間的運算數組:可對數據執行批量運算(不用編寫循環即可)。這通常叫做矢量化(vectorization)。
大小相等的數組之間,它們之間任何的算術運算都會應用到元素級(每個元素都做這個運算了),數組與標量的算術運算也是。
不同大小的數組之間的運算叫做廣播(broadcasting)。
基本的索引和切片數據不會被復制,任何修改都直接改了原數組。
如果僅是要一份副本,則用 .copy()。
對二維數組單個元素的索引:
這兩種方式等價。
若arr2d[2],則輸出的是一維數組[7,8,9]。
2*2*3的數組(2組2行3列):
切片索引 布爾型索引需要先引入:
from numpy.random import randn
或將代碼改成
data = np.random.randn(7, 4)
布爾型數組的長度必須跟被索引的軸長度一致。每個名字對應 data 數組一行。
對條件進行否定的兩種方式:
組合應用多個布爾條件,可使用&、|等布爾算術運算符:
通過布爾型索引選取數組中的數組,將總是創建數據的副本,即使返回一模一樣的數組也是一樣。
通過布爾型數組設置值:
通過一維布爾數組設置整行或列的值:
花式索引(Fancy indexing)指利用整數數組進行索引。
np.empty((8,4)) Return a new array of given shape and type, without initializing entries.
for i in range(8): arr[i] = i Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step.
為了以特定順序選取行的子集,只需傳入一個用于指定順序的整數列表或 ndarray,使用負數索引會從末尾開始選取行(最后一行是 -1)。
一次傳入多個索引組,返回一個一維數組:
取整列的兩種方法,相當于給列排了順序:
花式索引跟切片不一樣,總是將數據復制到新數組中。
數組轉置和軸對換轉置返回的是源數據的視圖,不進行任何復制操作。數組有 transpose 方法,還有一個 T 屬性來完成轉置:
高維數組
Transpose 要一個軸編號:
arr是 2 組 2 行 4 列的數組,transpose的參數表示shape的形狀,對于這個例子來說,即2[0]、2[1]、4[2],transpose(1,0,2)轉置后變為2[1]、2[0]、4[2],看起來仍是 2 組 2 行 4 列的形狀,但數組內的元素經過轉換后索引已經改變,也要遵循(1,0,2)的順序。如轉置前的數組arr[0,1,0]索引值為 4,轉置后的數組arr"[1,0,0],索引值才為 4。其它同理。
ndarray 的 swapaxes 方法接受一對軸編號且返回源數據的視圖:
轉置后的數組arr.T為 4[2] 組 2[1] 行 2[0] 列數組,swapaxes(1,2)就是將第二個維度(中括號內數字)和第三個維度交換,即轉換為 2 組 4 行 2 列。
通用函數:快速的元素級數組函數通用函數(即 ufunc)是一種對ndarray中的數據執行元素級運算的函數,就是一些簡單函數。
利用數組進行數據處理用數組表達式代替循環的做法,通常被稱為矢量化。NumPy 數組將多種數據處理任務表述為數組表達式。
np.meshgrid函數接受兩個一維數組,并產生兩個二維矩陣(對應于兩個數組中所有的(x, y)對。
將條件邏輯表述為數組運算np.wherea函數是三元表達式x if condition else y的矢量化版本。
np.where的第二個和第三個參數不必是數組,傳遞給where的數組大小可以不相等,甚至可以是標量值。在數據分析工作中,where通常用于根據另一個數組而產生一個新的數組。
用where表述出更復雜的邏輯:(where的嵌套)
用于布爾型數組的方法有兩個方法any和all。
排序多維數組可以在任何一個軸向上進行排序,只需將軸編號傳給sort:
頂級方法np.sort返回的數組已排序的副本,就地排序則會修改數組。
唯一化以及其他的集合邏輯np.unique找出數組中的唯一值并返回已排序的結果。
np.in1d用于測試一個數組的值在另一個數組的情況。
隨機數生成numpy.random模塊多了用于高效生產多種概率分布的樣本值的函數(用來生成大量樣本值)。
不足之處,歡迎指正。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44753.html
摘要:中面向行和面向列的操作基本是平衡的。用層次化索引,將其表示為更高維度的數據。使用浮點值表示浮點和非浮點數組中的缺失數據。索引的的格式化輸出形式選取數據子集在內層中進行選取層次化索引在數據重塑和基于分組的操作中很重要。 我們在上一篇介紹了 NumPy,本篇介紹 pandas。 pandas入門 Pandas 是基于Numpy構建的,讓以NumPy為中心的應用變的更加簡單。 pandas...
摘要:根據錯誤率決定是否回退到訓練階段,通過改變迭代的次數和步長等參數來得到更好的回歸系數。使用回歸方法進行分類所需做的是把測試集上每個特征向量乘以最優化方法得來的回歸系數,再將該乘積結果求和,最后輸入到函數即可。 本篇內容為《機器學習實戰》第 5 章 Logistic 回歸程序清單。 書中所用代碼為 python2,下面給出的程序清單是在 python3 中實踐改過的代碼,希望對你有幫助。...
摘要:有一些表示常見圖形的對象稱為塊,完整的集合位于。中的繪圖函數在中,有行標簽列標簽分組信息。密度圖通過計算可能會產生觀測數據的連續概率分布的估計而產生的。在探索式數據分析工作中,同時觀察一組變量的散布圖是很有意義的。 我們在上一篇介紹了 pandas,本篇介紹 matplotlib。 繪圖和可視化 一個用于創建出版質量圖表的桌面繪圖包。 Matplotlib API入門 Figure ...
摘要:數據規整化清理轉換合并重塑數據聚合與分組運算數據規整化清理轉換合并重塑合并數據集可根據一個或多個鍵將不同中的行鏈接起來。函數根據樣本分位數對數據進行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應關系。 本篇內容為整理《利用Python進行數據分析》,博主使用代碼為 Python3,部分內容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個...
閱讀 1166·2021-11-11 16:55
閱讀 3051·2021-08-16 11:00
閱讀 2894·2019-08-30 15:56
閱讀 3434·2019-08-30 11:24
閱讀 3415·2019-08-30 11:05
閱讀 3531·2019-08-29 15:15
閱讀 2614·2019-08-26 13:57
閱讀 2553·2019-08-23 18:17