跟著書做,有問題的就會寫下來@@之前還有一本"一行指令學Python : 用Pandas掌握商務大數據分析"
第一章:python基本功能介紹
- 寫個函數來運用,慢慢地導入到pandas。
- df.columns 表格的最上面(欄位的說明,數學、英文、歷史等)
第二章:pandas介紹
- %matplotlib inline 是甚麼意思呢???沒想到還有魔術指令。
- df.index 表格的最左邊,(哪個人,A、B、C人)
- df.values(欄位內容)、df.shape = 顯示維度、dtype = 資料型態
- DataFrame裡面是運用了numpy的array。df.values就可以看出
- s = pd.Series([1,2,3]),是三列的資料 ( 3 , ) 一維資料
s = pd.array([1,2,3]),是一列的資料( 1 , 3 ) 一維資料 - d = s.to_frame(),轉成DataFrame
- t = d.T,要先轉成DataFrame,才能將其轉成一列 ( 1, 3 ) 二維資料
- s = pd.array([1,2,3]),是一列的資料( 1 , 3 ) 一維資料
s.reshape(3,1),就可以轉成 ( 3, 1 ),要自己輸入 3, 1。二維資料 - s.reshape(-1, 1 ) 二維資料,也有reshape( 1, -1) 一維資料
- 二維轉一維,有兩個方法
s.reshape(-1)、 s.ravel() - df.isnull() ,可以檢查是否有遺漏值(要使用 np.nan ,自己使用字串'NaN'無效,且待會計算平均的時候會出現錯誤)
- df.loc[ ['simon'] ] 是 location哪個人,
df.iloc[ [ 0 ] ] 是 index location 哪一列,可以用在取某個區間的列 - df.loc [ ['第一個人' ,'第二個人] ] [ [ '第一項目', '第二項目' ] ]
這裡是指定某個人,某個項目 - df.loc[ ['第一個人' ,'第二個人], '第一項目' : '第N項目' ]
這裡是指定某個人, 某個區間的項目
所以要指定就用中括號刮起來,要區間的話,就用冒號處理 - 在處理df的時候,建議還是先複製,df2 = df.copy()
- df.drop(['個人平均'], axis=1) 可以刪除(所以建議copy原始資料)
- 篩選資料,先建立布林陣列,例如 bool_v = df['math'] > 60
接著帶入DF,df [ bool_v ] 就可以顯示出來了 - apply(某個函數), s.apply( lambda x : ( x+1) if (x%2)==1 else ( x-1 ) )
s.apply(lambda (x是s裡面的值) : (若是真的執行這裡) if(判斷式) else (假的執行這裡)) - 習題:有字串( '90' )跑入資料中,DF看不出來,用mean()就會顯示錯誤,但要怎麼去找這字串呢???用下面的方法en.apply(lambda x :(print(x)) if(type(x) != int) else () )
- 找到以後用at來修改(感謝Mike分享很多的技巧),專門修改某一個欄位的值
- 取得欄位的名稱(感謝python攻略),有時候函數有括號,像columns就不用括號
- 要將NAN的值,用各科的平均填回去,吃盡了苦頭。
1.將平均放入一個陣列 meanlist
2.取出df2的shape大小,之後要跑for
3.取出df2.columns ,欄位名稱(出來的就是陣列)
4.再將每科是NAN的放入listna陣列
5.最後比對 listna,TRUE就放入平均。df2.at[ '哪個人' , '哪個科目' ] = 多少
6.很特別,用type會顯示兩種,一個是int,一個是float
第三章:資料預處理 (用sklearn預處理資料)
- 有兩類資料類型,數值型(num_pl)、類別型(cat_pl),最後整合起來資料型(data_pl)
sklearn的SimpleImpute會轉成numpy。 - ddof=0,回傳母體標準差;ddof=1,回傳樣本標準差。感謝ShengYu分享(裡面還有很多python教學)。
第四章:
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。