溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python數據讀取的常見錯誤

發(fā)布時間:2021-08-17 23:19:46 來源:億速云 閱讀:250 作者:chen 欄目:大數據

這篇文章主要講解了“Python數據讀取的常見錯誤”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python數據讀取的常見錯誤”吧!

1、UnicodeDecodeError

Python數據讀取的常見錯誤

read_csv 默認讀入文件的編碼格式為:utf-8,如果讀入文件無法被utf-8編碼,就會報上面的錯誤。

可是我們怎么知道讀入文件的編碼格式呢?今天,為大家介紹一個這方面的包:chardet,它能返回文件的編碼格式。使用前先用pip install chardet,安裝一下。 接下里這樣編寫返回編碼格式,file為讀入的文件名稱。

# 獲取文件編碼類型def get_encoding(file):    # 二進制方式讀取,獲取字節(jié)數據,檢測類型    with open(file, 'rb') as f:        return chardet.detect(f.read())['encoding']

通過charadet包分析出文件的編碼格式后,不管使用 python原生的open, read,還是pandas的read_csv,都可以傳入給參數encoding.

2、 sep分隔符

常見文件的分隔符,比如 , \t, csv文件默認為逗號,不過常用的大數據庫,比如hive,有時會使用分隔符為\t,這時候就需要調整參數sep. 這類錯誤比較好解決。

3、讀取文件時遇到和列數不對應的行,此時會報錯

尤其在讀入文件為上億行的,快讀完時,突然報出這個錯,此行解析出的字段個數與之前行列數不匹配。

此時,需要調整一個參數:error_bad_lines為false,意思是忽略此行。

pandas.read_csv(***,error_bad_lines=False)

實際項目,讀入的文件數據環(huán)境比我們預想的復雜。假設我們的數據文件默認分隔符為逗號,然后如果某行的某個單元格取值為:

'山東省, 濰坊市, 青州市'

就光這一個單元格,就會解析出多列,報錯那也是自然的,這就要求我們在讀入之前對數據做好充分的清洗。

4、EOF inside string starting at line 錯誤

這個錯誤在讀入文件時,經常也會出現(xiàn)。這類錯誤需要修改 quoting參數。

df = pd.read_csv(csvfile, quoting=csv.QUOTE_NONE )

默認取值為0,遇到錯誤時,可以根據文檔調整。

quoting : int or csv.QUOTE_* instance, default 0Control field quoting behavior per csv.QUOTE_* constants. Use one of QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3).

感謝各位的閱讀,以上就是“Python數據讀取的常見錯誤”的內容了,經過本文的學習后,相信大家對Python數據讀取的常見錯誤這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI