資料分析 知識體系 Python篇
阿新 • • 發佈:2020-12-31
numpy
基本屬性
- n維陣列;數值運算
- 建立陣列: np.array(list,dtype=)
- 陣列維度:array.ndim
- 陣列形狀:array.shape
- 陣列元素個數:array.size
建立陣列
- 普通建立:np.array(list)
- 全0陣列:np.zeros((row,col))
- 全1陣列:np.ones((row,col))
- 有序數列:np.arange(num); np.arange(start,end,by)
- 改變形狀:array.reshape((row,col))
- 生成線段:np.linspace(start,end,num)
基礎運算
a = np.array([1,2,3, 4]).reshape((2,2))
b = np.arange(4).reshape((2,2))
- np.fun(array) 多數情況等於 arrary.fun()
- 加減乘除等運算都是作用於元素: a*b;sin(a);a<3:返回布林值
- 矩陣相乘:np.dot(a,b); 有第一點,還可以表示為a.dot(b)
- 矩陣轉置:np.transpose(a);a.T
- 隨機矩陣(元素為0-1的隨機數):np.random.rand(row,col)
- 隨機矩陣(元素服從標準正態分佈):np.random.randn(row,col)
- 陣列求和:np.sum(a)
- 陣列求最值:np.max(a);np.min(a)
- 行/列操作:np.sum(a,axis=0/1) 0表示跨行(垂直);1表示跨列(水平)
- 最值索引:np.argmin(a);np.argmax(a)
- 平均:np.mean(a)
- 中位數:np.median(a)
- 累加:np.cumsum(a)
- 累差:np.diff(a)
- 逐行排序:np.sort(a)
- 擷取矩陣:np.clip(a,min,max) 所有小於min的數=min,大於max的數=max
索引切片
- i行:a[i]
- j列:a[:,j]
- i行j列:a[i][j];a[i,j]
- i行n-m列:a[i, n:m]
- 把陣列展為1維陣列:a.flatten()
合併
- 垂直合併: np.vstack((a,b))
- 水平合併:np.hstack((a,b))
- 多個數組合並:np.concatenate((a,b,c,d),axis=0/1)
分割
- 等量分割:np.split(a,n,axis=) (n表示分割成幾塊)
- 不等量分割:np.array_split(a,n,axis=)
- 豎直分割:np.vsplit(a,n)
- 水平分割:np.hsplit(a,n)
淺拷貝和深拷貝
- 淺拷貝:b複製a,修改a後b跟著改變;增加指標指向已存在的記憶體地址。b = a
- 深拷貝:b複製a,修改a後b不跟著改變;增加指標且申請了一個新的記憶體地址。b = a.copy()
pandas
基本屬性
- 資料框;資料處理;基於numpy
- 建立df:pd.DataFrame(data,index,columns)
- df型別:df.dtypes
- df 行名/列名/值:df.index/df.columns/df.values
- df描述:df.describe()
- df轉置:df.T
- 按索引排序:df.sort_index(axis=0/1,ascending=bool)
- 按值排序:df.sort_values(by=col_name,ascending)
選擇資料
df = pd.DataFrame(data,columns=['A','B','C'],index=[1,2,3])
- 選擇某列:df[‘A’];df.A
- 選擇某行:df[i:i+1]
- 按標籤選擇:df.loc[ [1,2],[‘A’,'B’] ]
- 按位置選擇:df.iloc[i,j];df.iloc[i:j,k:l];df.iloc[[1,2,4],1:4]
- 混合選擇:df.ix[]
- 條件選擇:df[df.A<3]
處理缺失值
- 丟棄:df.dropna(axis,how=‘any’/‘all’)
- 填充:df.fillna(value=0)
- 檢查:df.isna().sum()
匯入/匯出資料
- 匯入csv:pd.read_csv(’…csv’)
- 匯出資料:df.to_csv(‘檔名’)
concat合併
concat([df1,df2,df3],axis,ignore_index,join,join_axes)
- axis: 0縱向/1橫向
- ignore_index: True表示對舊index整合成新的index
- join:inner取交集;outer取並集
- join_axes:選擇對齊的索引
df1.append([df2,df3])
- 縱向合併,將df2,df3新增到df1下面
merge合併
pd.merge(left,right,on=[‘key1’,‘key2’],how=‘inner’/‘outer’/‘left’/‘right’,indicator,suffixes)
- on:以某個列名作為連線鍵
- how:連線方式
- indicator:取值為True時,顯示merge方式
- suffixes=[左表字尾名,右表字尾名]:為列名增添字尾
pd.merge(left,right,left_index=True,right_index=True,how=’’)
- left_index/right_index:取值為True時,按行名連線
matplotlib.pyplot
Series
data = pd.Series(...)
data.plot() / plt.plot(data)
plt.show()