1. 程式人生 > >Numpy學習疑難雜錄——讀《python資料分析》

Numpy學習疑難雜錄——讀《python資料分析》

Numpy.loadtxt函式的使用

從函式名的字面意義上理解,該函式用於從文字檔案中載入資料到numpy陣列。
參照書籍《Python Data Analysis》(中譯名:《python 資料分析》)中3.2節的示例,意圖對csv檔案進行資料匯入時出現錯誤。

data = np.loadtxt("hjy.csv",delimiter=',',skiprows=2,unpack=True)

 產生該錯誤的原因是loadtxt函式的引數中的dtype引數預設為float,而當被處理的csv檔案範圍中存在‘空值’、‘字串’時,便會
出現這個異常,因此確認單元格中的值型別是很重要的,如果你用notepad++檔案開啟,你就會發現你所需要處理的資料裡,
數值和字串是混著的,那麼出現異常也就能理解了。

因此我們需要做一些預處理:

  1. 對於不必要的表頭,使用skiprows引數跳過不處理,即使它們是字串也不會產生影響;
  2. 對於字串的列,使用usecols引數指定要處理的列,這樣也可以避免處理字串列;
  3. 對於資料值的域,使用查詢替換將所有的空值替換成0

對於資料型別的定義,有時根據需要的值型別、值範圍,自己指定會更合適,使用引數dtype

因此對於如下資料表:

使用如下語句避開字串行列的干擾:

data = np.loadtxt("hjy.csv",dtype=np.int16,delimiter=',',
                  skiprows=2,usecols=(2,),unpack=True)

其中usecols可以這樣賦值:

usecols=(x for x in range(1,6))