書籍《利用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 |
|
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 | 保存多個數組至壓縮文件 |
dot | 矩陣內積XTX |
qr | QR分解 |
inv | 逆矩陣 |
svd | 奇異分解SVD |
eig | 特征值和特征向量 |
det | 矩陣行列式 |
normal(shape) | 以shape規格正態分布數組 |
randint/rand/randn | |
seed |
注:不同shape數組之間的運算叫做廣播
Pandas--基於Numpy構建,提供高級數據結構和操作工具
Series是一種類似於一維數組的對象,由一組數據(Numpy數據類型)以及一組與之相關的數據標簽組成。
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(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數據結構(待補充。。。)