利用Python數據分析-Numpy和Pands篇


書籍《利用Python進行數據分析》

Numpy--數組及矩陣,矢量計算

  1、ndarray多維數組, matrix矩陣

  2、針對整組數據進行快速運算的標准數學(統計)函數,(與list區別:無需循環編寫程序)

  3、用於讀寫磁盤數據工具及操作內存映射文件工具

  4、線性代數、隨機數生成及傅里葉變換

  5、基於C語言API,具有良好的運行速率

創建函數
array 輸入數據轉換成ndarray(dtype可選)
arrange  內置range返回ndarray
zeros/zeros_like 根據指定shape和dtype返回全0數組或參考其他數組的shape和dtype
eye 創建N*N單位矩陣
ones/ones_like 根據指定shape和dtype返回全1數組或參考其他數組的shape和dtype
empty/empty_like 只分配空間但不填充任何值
基本函數
dtype


數據類型dtype(可自定義類型) 注:復數Complex不得轉換成整數

shape  
reshape  
ravel  
transpose/T 數組轉置
stack/hstack/vstack/dstack/concatenate/  
ix_ 選取方形區域的索引器,花式索引x[ix_([0,1],[0,1])]=x[[0,1]][:,[0,1]]
統計函數
sqrt/square/log/sign/abs  
min/max/ptp/sum  
mean/var/std  
argmin/argmax 最小最大值索引
any/all 數組中是否存在一個或多個True/數組中是否全是True
average  
median  
sort  
in1d 測試一個數組中的值是否在另一個數組中的成員資格,返回bool數組
unique/intersect1d/union1d/setdiff1d/setxor1d  
文件輸入輸出函數
loadtxt/savetxt  
save/load 將數組以二進制格式保存磁盤或讀取(npy)
savez 保存多個數組至壓縮文件
線性代數函數(linalg)
dot 矩陣內積XTX
qr QR分解
inv 逆矩陣
svd 奇異分解SVD
eig 特征值和特征向量
det 矩陣行列式
隨機數函數(random)
normal(shape) 以shape規格正態分布數組
randint/rand/randn  
seed  

注:不同shape數組之間的運算叫做廣播


 

Pandas--基於Numpy構建,提供高級數據結構和操作工具

 Series是一種類似於一維數組的對象,由一組數據(Numpy數據類型)以及一組與之相關的數據標簽組成。

Series
values/index 表現形式和索引,index不允許修改
isnull/notnull/fillna/dropna() 檢測是否缺失/填充缺失值/過濾缺失值
name/index.name  
Series(data, index=) 創建Series對象
reindex([], fill_value=,method=) 創建新索引,ffill、pad/bfill、backfill(前/后填充/搬運)
drop 丟棄指定索引上的項
sort_index()/order()  
rank(method=,ascending=) method參數破壞平級關系:max/min/first/average
corr/cov,corrwith 相關系數、協方差
unique,value_counts

唯一值,計算各值出現的頻率

isin

Series各值是否存在於輸入的值序列中,返回布爾數組

iget_value

根據位置的索引查值

DataFrame是一個表格型的數據結構,含有一組有序的列,每列可以是不同的值類型。

DataFrame
DataFrame(data, columns=, index=) 創建DataFrame對象
ix() 用過索引字段獲取行
reindex([],method=,columns=) 相比較Series,可修改行列索引
add(df,fill_value=,axis=)       sub,div,mul  
reindex(columns=,fill_value=)  
apply(f,axis=) f=lambda x: x.max()-min() 將函數應用到各行或各列形成的一維數組上
applymap 針對元素級的python函數
sort_index(axis=,ascending=,by=) by參數可根據多列排序
sum(axis=,level=),cumsum/cummin/cummax/cumprod 求和(,根據級別),cumsum為累計求和函數
mean(axis=,skipna=)/median/mad/var/std/quantile skipna參數表示是否忽略NA
idxman/idxmin/argmin/argmax 達到最大或最小的索引或索引位置(整數
describe 列計算匯總統計
dropna(how=‘all’,axis=,thresh) /fillna(inplace=,limit=,axis=,method=) 過濾缺失值(all僅丟棄全NA的行或者列,thresh篩選)/填充缺失值(是否返回新對象,,,)
set_index(,drop=)/reset_index 將其中一個或多個列轉換成行索引(是否允許列從原dataframe移除)

數據為缺失值或者NA值時,表示為NaN

可以輸入給DataFrame構造器的數據

類型  說明
二維ndarray 數據矩陣,可傳入行列標
數組、列表、元組或字典 每個序列會編程DataFrame的一列,長度必須相同
Numpy的結構化/記錄數組 由數組組成的字典
Series組成的字典 每個Series都會成為一列,
由字典組成的字典 各內層字典會成為一列,鍵會合並成結果的行索引
字典或Series的列表 各項會成為DataFrame的一行,鍵索引值會成為列索引
列表或元組組成的列表 類似“二維ndarray”
另一個DataFrame 沿用該索引
Numpy的MaskedArray 類似“二維ndarray”,掩碼值變成缺失值或者NA值

DataFrame索引選項

類型  說明
obj[val] 選取DataFrame單列或一組列
obj.ix[val] 選取DataFrame單行或者多行
obj.ix[:,val] 選取單列或多列
obj.ix[val1,val2] 同時選取行列
reindex 將1軸或多軸重新匹配索引
xs 根據標簽選取單行或單列,返回Series
icol,irow 根據整數位置選取單列或單行,返回Series

get_value,set_value

根據行列標簽選取/設置單個值

層次化索引:

  MultiIndex

exp:   data = Series(np.random.randn(10), index=[['a',a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]])

    data.unstack()  數據被重新安排到DataFrame ;stack()  逆運算

    swaplevel(調整某條軸上各級別的順序),sortlevel(根據指定級別上的值對數據進行排序)

注:DataFrame和Series之間的運算和廣播效果一樣

  axis = 1----行,axis = 0 -----列

Panei數據結構(待補充。。。)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM