Numpy
精通面向數組編程和思惟方式是成爲Python科學計算大牛的一大關鍵步驟。——《利用Python進行數據分析》
Numpy(Numerical Python)是Python科學計算的基礎包。具備如下功能:
快速高效的多維數組對象ndarray
ndarray表示的是N維數組對象。
ndarray是一個通用的同構數據多維容器,也就是說,其中的元素必須都是相同類型的。
每一個數組裏面都有一個shape和一個dtype
shape表示各個維度大小的元組
dtype表示數組數據類型
除非是顯示的設置dtype,不然np.array會嘗試推斷出數組的數據類型
用於對數組執行元素級別計算以及直接對數組執行數學運算的函數
用於讀寫硬盤上基於數組的數據集的工具
線性代數運算、傅里葉變換,以及隨機數生成的功能
用於將C、C++、Fortran代碼集成到Python的工具
做爲在算法之間傳遞數據的容器
Numpy數組在存儲和處理數據要比內置的Python數據結構高效得多。此外,由低級語言(好比C和Fortran)編寫的庫能夠直接操做Numpy數組中的數據,無需進行任何數據複製工做。
查看Numpy的版本
python -c "import numpy; print numpy.version.version"
1
方法
數組建立函數列表:
函數名
說明
zeros
建立指定長度或形狀全爲0的數組。
ones
建立指定長度或者形狀全爲1的數組。
empty
建立一個沒有任何具體值的數組。
arange
是基於Python原版range函數改進的數組版本。
array
將輸入的數據(能夠是列表、元組、數組、其餘的序列數組)轉換爲Numpy的ndarray。要是不指定dtype,那麼就由該方法推斷出dtype。默認直接複製數據。
asarray
將輸入的數據轉換爲Numpy的ndarray。若是輸入自己是ndarray就不進行復制操做了。
eye
建立一個N×N的單位矩陣,主對角線爲1,其他爲0。
identity
建立一個N×N的單位矩陣,主對角線爲1,其他爲0。
一元函數
函數名稱
說明
abs
計算整數、浮點數或者是複數的絕對值。
fabs
計算整數、浮點數的絕對值(比abs快)。
sqrt
計算各個元素的平方根,至關於arr**0.5。
square
計算各個元素的平方,至關於arr**2。
exp
計算各個元素的指數e*。
log
天然對數。
log10
底數爲10的對數。
log2
底數爲2的對數。
log1p
底數爲(1+x)的對數。
sign
計算各個元素的正負號:1(正數)、-1(負數)、0(零)。
ceil
計算各元素的ceiling值,即大於等於該值的最小正數。
floor
計算個元素的floor值,即小於等於該值的最大正數。
rint
將個元素四捨五入到最接近的整數,保留dtype。
modf
將數組的小數和整數部分以兩個獨立數組的形式返回。
isnan
返回一個表示「哪些值是NaN(這不是一個數字)」的布爾值類型。
isfinite
返回一個表示「哪些元素是有窮的(非inf,非NaN)」的布爾值數組。
isinf
返回一個表示「哪些元素是無窮的」的布爾值數組。
cos、sin、tan
三角函數。
cosh、sinh、tanh
雙曲型三角函數。
arccos、arcsin、arctan
反三角函數。
arccosh、arcsinh、arctanh
雙曲型反三角函數。
logical_not
計算各個元素not x的真值,至關於-arr。
說明:
NaN表示not a number,即非數字。
二元函數
函數名稱
說明
add
將數組中對應的元素相加。
subtract
從第一個數組中減去第二個數組中元素。
multiply
數組元素相乘。
divide
除法。
floor_divide
向下取整除法。
power
對第一個數組中的元素A,根據第二個數組中的相應元素B,計算A^B的值。
maxmum
取最大值。
fmax
除NaN外的最大值。
minimum
取最小值。
fmin
除NaN外的最小值。
mod
取餘數。
copysign
將第二個數組中的值的符號複製給第一個數組中的值。
greater
大於。
greater_equal
大於等於。
less
小於。
less_equal
小於等於。
equal
等於。
not_equal
不等於。
logical_and
邏輯與(&)。
logical_or
邏輯或(|)。
logical_xor
邏輯異或(^)。
基本數組統計方法
名稱
說明
sum
對數組中所有或者是某個軸向的全部元素進行求和。零長度的數組的sum值爲0。
mean
算術平均值。零長度的數組的mean值爲NaN。
std
標準差。自由度可調整(默認爲n)。
var
方差。自由度可調整(默認爲n)。
min
返回數組中的最小元素。
max
返回數組中的最大元素。
argmin
返回數組中最小元素的索引。
argmax
返回數組中最大元素的索引。
median
返回數組的中位值。注意,該方法不會對數組進行排序。數組個數爲奇數個返回最中間一個數字,偶數個返回最中間兩位的均值。
ravel
將多維數組展平多一維數組。
cov
協方差。
布爾型數組方法
名稱
說明
any
數組中是否存在一個或者多個True。若是存在就返回True,反之,返回False。
all
數組中是否所有爲True。若是全部數組中全部元素都是True就返回True,反之,返回False。
數組集合運算
名稱
說明
unique(x)
有序返回x中全部的惟一元素。
intersect1d(x, y)
有序返回x和y中的公共元素。
union1d(x, y)
有序返回x和y的並集。
in1d(x, y)
返回一個表示「x的元素是否包含於y」的布爾型數組。存在用True表示,不存在用False表示。
setdiff1d(x, y)
返回存在於x可是不存在於y的集合差。
setxor1d(x, y)
返回存在於一個數組中可是不一樣時存在於兩個數組中的元素的對稱差集合。
數組操做
名稱
說明
searchsorted
searchsorted函數爲指定的插入值返回一個在有序數組中的索引位置,從這個位置插入能夠保持數組的有序性。
extract
從數組中抽取元素。
cumsum
全部元素的累計和。
cumprod
全部元素的累計積。
矩陣
名稱
說明
mat
建立一個矩陣。注意:mat函數建立矩陣時,若輸入已爲matrix或ndarray對象,則不會爲它們建立副本。所以,調用mat函數和調用matrix(data, copy=False)等價。
T
轉置。mat.T
I
逆矩陣。mat.I
bmat
分塊矩陣,能夠用小的矩陣來建立大的矩陣。矩陣A,矩陣B,矩陣C,C=bmat("A B;B A")
線性代數
線性代數是數學的一個重要分支。numpy.linalg模塊包含線性代數的函數。使用這個模塊,咱們能夠計算逆矩陣、求特徵值、解線性方程組以及求解行列式等。
名稱
說明
dot
矩陣乘法。用法:x.dot(y)或者是np.dot(x, y)
diag
以一維數組的形式返回方陣中的對角線(或者非對角線)元素,或將一維數組轉換爲方針(非對角線元素爲0)。
trace
計算對角線元素的和。
det
計算矩陣行列式。
eig
計算矩陣的本徵值和本徵向量。
inv
計算矩陣的逆,即求逆矩陣。
pinv
計算矩陣的Moore-Penrose僞逆。
qr
計算QR分解。
svd
計算奇異值分解(SVD)。
solve
解線性方程組Ax=b,其中A是一個方陣。
lstsq
計算Ax=b的最小二乘積。
隨機數
這些是numpy.random的函數:
名稱
說明
seed
肯定隨機數生成器的種子。
permutation
返回一個序列的隨機排列或返回一個隨機排列的範圍。
shuffle
對一個序列就地隨機排序。
rand
產生均勻分佈的樣本值。
randint
從給定的上下限範圍內隨機選取整數。
randn
產生正態分佈(平均值爲0,標準差爲1)的樣本值,相似於MATLAB接口。
binomial
產生二項分佈的樣本值。
normal
產生正態(高斯)分佈的樣本值。
beta
產生Beta分佈的樣本值。
chisquare
產生卡方分佈的樣本值。
gamma
產生Gamma分佈的樣本值。
uniform
產生[01)中均勻分佈的樣本值。
專用函數
名稱
說明
sort
函數返回排序後的數組。
lexsort
函數根據鍵值的字典序進行排序。
argsort
函數返回輸入數組排序後的下標。
ndarray
名稱
說明
sort
函數可對數組進行原地排序。
msort
函數沿着第一個軸排序。
sort_complex
函數對複數按照先實部後虛部的順序進行排序。
金融函數
名稱
說明
fv
函數計算所謂的終值(future value),即基於一些假設給出的某個金融資產在將來某一時間點的價值。
pv
函數計算現值(present value),即金融資產當前的價值。
npv
函數返回的是淨現值(net present value),即按折現率計算的淨現金流之和。
pmt
函數根據本金和利率計算每期需支付的金額。
irr
函數計算內部收益率(internal rate of return)。 內部收益率是是淨現值爲0時的有效利率,不考慮通脹因素。
mirr
函數計算修正後內部收益率(modified internal rate of return),是內部收益率的改進版本。
nper
函數計算按期付款的期數。
API文檔
Numpy1.13.dev0文檔
Pandas
Pandas(Python Data Analysis Library)是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而建立的(讓以Numpy爲中心的應用變得更加簡單)。Pandas 歸入了大量庫和一些標準的數據模型,提供了高效地操做大型數據集所需的工具。pandas提供了大量能使咱們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成爲強大而高效的數據分析環境的重要因素之一。
數據結構
說明
Series
一維數組,與Numpy中的一維array相似。兩者與Python基本的數據結構List也很相近,其區別是:List中的元素能夠是不一樣的數據類型,而Array和Series中則只容許存儲相同的數據類型,這樣能夠更有效的使用內存,提升運算效率。若是傳入的數據找不到對應的列,就將結果置爲NaN。
Time- Series
以時間爲索引的Series。
DataFrame
二維的表格型數據結構。不少功能與R中的data.frame相似。能夠將DataFrame理解爲Series的容器。如下的內容主要以DataFrame爲主。 若是傳入的列在數據中找不到,就會產生NA值。若是賦值是一個Series,就會精確匹配DataFrame中的索引,而且全部的空位都會被填充NaN。
Panel
三維的數組,能夠理解爲DataFrame的容器。
Pandas兼具Numpy高性能的數組計算功能以及電子表格和關係型數據庫(如SQL)靈活的數據處理功能。它提供了複雜精細的索引功能,以便更爲便捷地完成重塑、切片和切塊、聚合以及選取數據子集等操做。
Series
Series的字符串的表現形式爲:索引在左邊,值在右邊。
Series的最重要的一個功能就是它在算術運算中會自動對齊不一樣索引的數據。
Series的索引切片和原Python的切片是不同的,這裏的test['a':'c']中ac都是包含的,而原Python中的切片中c是不包含的。
DataFrame
DataFrame是一個表格型的數據結構,它含有一組有序的列,每列能夠是不一樣的值類型(數值、字符串、布爾值等等)。
DataFrame能夠既有行索引又有列索引,他能夠被看作是由Series組成的字典(共用同一個索引)。跟其餘相似的數據結構相比(如R的data.frame),DataFrame中面向行和麪向列的操做基本上是平衡的。其實,DataFrame中的數據是以一個或者多個二維塊存放的(而不是列表、字典或者是別的一維數據結構)。
注意:雖然DataFrame是以二維結構保存數據的,但你仍然能夠輕鬆地將其表示爲更高維度的數據(層次化索引的表格型結構,這是Pandas中許多高級數據處理功能的關鍵要素)。
咱們能夠經過相似字典標記的方式或者屬性的方式,獲取DataFrame中的一個Series,好比frame['name']這種形式。
注意:返回的Series擁有原DataFrame相同的索引,且其name屬性也已經被相應的設置好了。行也能夠經過位置或者名稱的方式進行獲取,好比用索引字段ix。
注意:經過索引方式返回的列只是相應數據的視圖而已,並非副本。所以,對返回的Series所作的任何修改所有都會反映到源DataFrame上。經過Series的copy方法便可顯式地複製列。
Index的方法和屬性
名稱
說明
append
鏈接另外一個Index對象,產生一個新的Index。
diff
計算差集,並獲得一個Index。
intersection
計算交集。
union
計算並集。
delete
刪除索引i處的元素,並獲得新的Index。
drop
刪除傳入的值,並獲得新的Index。
insert
將元素插入到索引i處,並獲得新的Index。
is_monotonic
當各個元素大於等於前一個元素的時候,返回True。
is_unique
當Index惟一的時候,返回True。
unique
返回在數組中Index惟一的元素構成的數組。
reindex
reindex函數的參數列表
參數
說明
index
用做索引的新序列。既能夠是Index實例,也能夠是其餘序列型的Python數據結構。Index會被徹底使用,就像沒有任何複製同樣。
method
插值(填充)方式,具體參數見下面表格。
fill_value
在從新索引的過程當中,須要引入缺失值是使用的替代值。
limit
前向或者後向填充時的最大填充量。
level
在MultiIndex的指定級別上匹配簡單索引,不然選取其子集。
copy
不管如何複製,默認爲True;若是是False,則新舊相等的話就不復制了。
reindex函數method參數
參數
說明
ffill
前向填充值。
pad
前向搬運值。
bfill
後向填充值。
backfill
後向搬運值。
算術方法
方法
說明
add
加法
sub
減法
div
除法
mul
乘法
約簡方法的經常使用選項
選項
說明
axis
約簡的軸。DataFrame的行用0表示,列用1表示。
skipna
排除缺失值,默認值爲True。
level
若是軸是層次化索引的(即MultiIndex),則根據level分組約簡。
描述統計方法
方法
說明
count
非NA值的數量。
describe
針對Series或者各個DataFrame列計算彙總統計。
min
最小值。
max
最大值。
argmin
計算可以獲取到最小值的索引位置。(整數)
argmax
計算可以獲取到最大值的索引位置。(整數)
idxmin
計算可以獲取到最小值的索引值。
idxmax
計算可以獲取到最大值的索引值。
quantile
計算樣本的分位數(0到1)。
sum
值的總和。布爾值會被強制轉換爲1(True)和0(False)。
mean
值的平均值。
median
值的算術中位數。(50%中位數)
mad
根據平均值計算平均絕對離差。 |
var
樣本值的方差。
std
樣本值的標準差。
skew
樣本值的偏度(三階矩)。
kurt
樣本值的峯度(四階矩)。
cumsum
樣本值的累積和。布爾值會被強制轉換爲1(True)和0(False)。
cummin
樣本值的累計最大值。 布爾值會被強制轉換爲1(True)和0(False)。
cummax
樣本值的累計最小值。布爾值會被強制轉換爲1(True)和0(False)。
cumprod
樣本值的累計積。布爾值會被強制轉換爲1(True)和0(False)。
diff
計算一階差分(對時間序列頗有用)。
pct_change 計算百分數變化。