Numpy學習疑難雜錄——讀《python資料分析》
阿新 • • 發佈:2019-01-07
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++檔案開啟,你就會發現你所需要處理的資料裡,
數值和字串是混著的,那麼出現異常也就能理解了。
因此我們需要做一些預處理:
- 對於不必要的表頭,使用skiprows引數跳過不處理,即使它們是字串也不會產生影響;
- 對於字串的列,使用usecols引數指定要處理的列,這樣也可以避免處理字串列;
- 對於資料值的域,使用查詢替換將所有的空值替換成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))