您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python數據讀取的常見錯誤”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python數據讀取的常見錯誤”吧!
1、UnicodeDecodeError
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數據讀取的常見錯誤這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。