1. 程式人生 > 其它 >資料分析 知識體系 Python篇

資料分析 知識體系 Python篇

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()