數據分析 matlab Numpy + scipy + pandas +matplotlib 數據計算 +科學應用+數據清洗+數據可視化 1 Numpy概述 1 基於c語言的python接口的數值算法庫 2 開源免費 3 彌補了python語言在數值計算方面的短板 4 作為常用科學計算工具的底層支撐 2 Numpy的性能 1 簡化代碼編寫,提高開發效率 2 通過優化底層實現,提高運行速度 基礎: 1 數組 2 Numpy中的數組是ndarray類實例化的對象: 實例數據:數組的內容 元數據:對數組的描述 大部分對數組的操作僅僅是對元數據的操作,以此提高執行性能 3 Numpy中的數組必須是同質的,即所有元素的數據類型必須完全相同 4 dtype和shape屬性分別表示元素類型和維度 5 實例化 np.arange(起始值,終止值,步長) 默認起始值0 默認步長:1 np.array(任何可被解釋為數組的序列) 6 類型轉換astype(目標類型)->轉換后的新數組 7 '<U21' 表示字符串,其中每個字符都是小端字節序的21位Unicode字符 3 多維數組和元素索引 數組的維度表示為一個元組:(高維度數->低維度數) 一維數組,6個元素:(6,) 二維數組,2行3列:(2,3) 三維數組,2頁3行4列:(2,3,4) 1 通過下標運算符訪問數組中的元素 2 數組[頁標][行標][列標] 3 數據類型 存儲形式,處理方式 1 內置類型 布爾型 bool_ : True/False 整型 有符號 :int8/int16/int32/int64 無符號 : uint8/uint16/uint32/uin64 浮點型: float16/float32/float64 復數型 :complex64/complex128 2 復合類型 有多個相同或不同類型的字段組合而成的類型 np.array(..,dytpe=復合類型) 3 類型字符碼 bool_:? 有符號整型:i1/2/4/8 無符號整型:u1/2/4/8 浮點型: f2/4/8 復數型:c8/16 字符串:U<字符數> 日期時間:M 字節序(針對多字節整型):</>/=表示小端/大端/硬件 4 切片 數組[起始:終止:步長] 默認起始:首(正步長)/尾(負步長) 默認終止:尾后(正步長)/首前 默認步長:1 5 變維 1 視圖變維:元數據獨立,實際數據共享 1 數組.reshape(新維度) ->新數組 元素數和維度數必須匹配 2 數組.ravel() -> 得到的是一維數組 3 復制變維:元數據和實際數據都是獨立的 數組.flatten() -->一維數組 (數組運算不會改變) 4 就地變維:修改元數據的值(維度信息,不會產生新的數組對象) 數組.shape = 新維度 數組.resize(新維度) 6 組合拆分 1 垂直組合:沿着垂直方向組合兩個小的同維數組為一個大數組 np.vstack((上,下)) np.concatenate((上,下),axis=0) axis : 軸向,用維度的下標表示 0為行,,1為列 2 水平組合:沿着水平方向組合兩個小的同維數組為一個大數組 np.hstack((左,右)) np.concatenate((左,右),axis=1) 3 深度組合:沿着縱深方向組合兩個小的同維數組為一個大數組 np.dstack((前,后)) 會升維 4 行組合:以兩個一維數組按照行的方式組合成一個二維數組 np.row_stack((上,下)) 5 列組合:以兩個一維數組按照列的方式組合成一個二維數組 np.column_stack((左,右)) 6 垂直拆分:將一個大的數組沿着垂直方向拆分成若干個小的同維數組 np.vsplit(被拆分數組,拆分份數) np.split(被折分數組,拆分份數,axis=0) 7 水平拆分:將一個大的數組沿着水平方向拆分成若干個小的同維數組 np.hsplit(被折分數組,拆分份數) np.split(被折分數組,拆分份數,axis=1) 8 深度拆分:將一個大的數組沿着縱深方向拆分成若干個小的同維數組 np.dsplit(被拆分數組,拆分份數) 7 ndarray的屬性 dtype -元素的數據類型 shape - 數組的維度 ndim - 數組的維數,len(shape) size - 數組的元素數,shape中元素相乘 itemsize - 元素字節數,與dtype相關 nbytes - 總字節數,size x itemsize T - 轉置視圖 real - 復數數組的實部視圖 imag - 復數數組的虛部視圖 flat - 扁平迭代器 8 ndarray <==>list np.array(列表) 二:數據可視化(Matplotlib) 1 基本繪圖 plot(水平坐標,垂直坐標) 2 線型,線寬和顏色 plot(...,linestyle=線型,linewidth=線寬,color=顏色,...) 線形:[-]/--/:./o/o-/... 線寬:0-oo color:dodgerblue/orangeered/limegreen/red/blue/... 3 設置坐標范圍 xlim(水平坐標最小值,水平坐標最大值) ylim(水平坐標最大值,水平坐標最大值) 坐標范圍越大,圖形越小,反而反之。 4 設置坐標刻度 xticks([水平軸刻度位置]) yticks([垂直軸刻度位置]) 表示數學的字符pi( [r'$-\pi$'] ) 表示數學2分之pi ( r'$-\frac{\pi}{2}$' ) 5 設置坐標軸屬性 ax = gca() # 獲取當前坐標軸圖 ax.spines['left'] - 左縱軸 ax.spines['left'].set_position(('data', 0)) ax.spines['right'] - 右縱軸 ax.spines['top'] - 上橫軸 ax.spines['bottom'] - 下橫軸 XX軸.set_position((坐標系,坐標值)) #設置位置 XX軸.set_color(顏色) #設置顏色 ax.spines['top'].set_color('none') 6 圖例 plot(...,label=圖例標簽,...) legend([loc=顯示位置]) 7 添加特點 scatter(水平坐標,垂直坐標,s=大小,marker=點型, edgecolor=邊緣色,facecolor=填充色,zorder=Z順序) 8 備注 annotate( 備注文本, xy =目標坐標, xycoords =目標坐標系, xytext=文本坐標, textcoords=文本坐標系, fontsize=字體大小, arrowprops=箭頭屬性) 9 圖形(窗口)對象 figure(窗口名(標題欄文本),figsize=大小,dip=分辨率,facecolor=顏色) 如果與指定窗口名對應的圖形對象不存在,那么就新建一個圖形窗口,如果已存在,那么不會再新建圖形窗口,而是將已存在的那個圖形窗口設置為當前窗口 title(窗口標題,fontsize=字體大小) xlabel(垂直軸標簽,fontsize=字體大小) tick_params(labelsize=刻度標簽字體大小) grid(linestyle=網格線型) 10 子坐標圖 1 矩陣布局 subplot(行數,列數,圖號) tight_layout() #緊湊布局 2 刪格布局 刪格定位器 = mp.GridSpec(行數,列數) subplot(刪格定位器[行,列] 3 自由布局 axes([左,底,寬,高]) # 歸一化單位 11 刻度定位器 xxxLocator(定位規則) ax = gca() ax.xaxis 水平坐標 ax.yaxis 垂直坐標 坐標軸.set_major_locator(刻度定位器) #主刻度 坐標軸.set_minor_locator(刻度定位器) #次刻度 mp.axis('off') #關閉坐標軸 12 區域填充 fill_between(水平坐標,起點垂直坐標,終點垂直坐標,color=顏色,alpha=透明度 ) 13 條形圖 bar(水平坐標,絕對高度,相對寬高,color=顏色,label=圖例標簽,alpha=透明度) 14 餅圖 pie(值數組,間隙數組,標簽數組,顏色數組,shadow =是否帶陰影,startangle=起始角度) 15 等高線圖 contour(點陣X坐標矩陣,點陣Y坐標矩陣,點陣Z坐標矩陣,梯度數,colors=顏色,linewidths=線寬) 16 熱力圖 17 網格線 ax = gca() ax.grid(which="major/minor",axis='x/y/both') 18 半對數坐標 semi(同plot) 19 極坐標 gca(projection='polar') #創建極坐標圖 plot/scatter(極角,極徑) 20 三維坐標系 from mp;_toolkits.mplot3d import axes3d 1 三維散點 ax.scatter(x坐標,Y坐標,Z坐標,s= 大小,marker=點形 , edgecolor=邊緣色,fancecolor=填充色, zorder=Z順序) 2 空間曲面 ax.plot_surface(點陣X坐標,點陣Y坐標矩陣,點陣Z坐標矩陣,rstride=行跨距, cstride=列跨距,cmap=顏色映射) ax.plot_wireframe(點陣X坐標矩陣,點陣Y坐標矩陣,點陣Z坐標矩陣, rstride=行跨距,cstride=列跨距,linewidth=線寬,color=顏色)
