使用pandas讀取CSV文件,只需要很簡(jiǎn)單的兩行代碼:
os.chdir(import_data_path)
a = pd.read_csv('filename.csv')
今天在這個(gè)過(guò)程中遇到兩個(gè)問(wèn)題,記錄一下。
一、OSError: Initializing from file failed
文件還沒(méi)開(kāi)始讀取,就已經(jīng)失敗了,查了一下是文件路徑import_data_path包含中文的問(wèn)題。把import_data_path修改成全英文,問(wèn)題就解決了。在中文路徑前加上“u”不能解決問(wèn)題。
有一點(diǎn)奇怪,我使用的是Anaconda3,python3對(duì)中文的支持已經(jīng)很好,每一個(gè)文件都自帶utf-8編碼方式的指定。當(dāng)我把csv另存為excel,使用pd.ExcelFile來(lái)讀取的時(shí)候,即使文件路徑包含中文,都不會(huì)報(bào)錯(cuò)。
os.chdir(import_data_path)
xls_file = pd.ExcelFile('filename.xlsx')
a = xls_file.parse('sheetname')
二、UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte
這是因?yàn)镃SV文件保存時(shí)沒(méi)有用'utf-8' 編碼。使用記事本打開(kāi)csv文件,另存為utf-8編碼的文件,就解決了。如下圖。
當(dāng)CSV的數(shù)據(jù)量很大時(shí)(百萬(wàn)),記事本打開(kāi)會(huì)很慢。建議用EmEditor打開(kāi)再另存為。