Python大資料分析學習.Pandas 資料匯入問題 (1)

小趙走四方發表於2018-05-19

pandas 資料匯入

在pandas中資料匯入有對應的模組;本節解決三個關鍵問題:

(1)路徑斜線問題;

(2)中文路徑問題;

(3)編碼問題;

正常匯入見下,若沒問題則完事大吉,但往往沒這麼順利。

import pandas as pd
file_path = 'D:/0Raw_data/ftm_p.csv'
data = pd.read_csv(file_path)

1、匯入路徑斜線問題

當錯誤型別如下,則一般是路徑斜線問題。

ValueError: stat: embedded null character in path

在win中的直接複製的路徑,斜線預設是“\”;但在python中路徑一般首選是“/”;有3種合理解決方案:

file_path1 = 'D:/0Raw_data/ftm_p.csv'
file_path2 = 'D:\\0Raw_data\\ftm_p.csv'
file_path3 = r'D:\0Raw_data\ftm_p.csv'

2、中文路徑問題

當錯誤型別如下,則一般是中文路徑問題。

OSError: Initializing from file failed

不廢話,解決方案就是先用open開啟,而且一般用open先開啟,能直接解決編碼問題:

file_path = 'D:/0Raw_data/zhaoyang_charge_sta/京AW7531'
path = open(file_path)
data = pd.read_csv(path)

3、編碼問題

當錯誤型別如下,則一般是編碼問題。panda讀取時會先檢測第一個字元的編碼型別,若不是'utf-8'則會報錯。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte

還是不廢話,直接解決方案:

解決方案1,用open,請注意報錯問題,可以合理配置encoding,在中國一般就為'utf-8'或者'gbk'。

import pandas as pd
file_path = 'D:/0Raw_data/zhaoyang_charge_sta/京AW7531'
f = open(file_path,encoding='utf-8')
data = pd.read_csv(f)
f.close()

解決方案2,配置pandas的encoding;

import pandas as pd
file_path = 'D:/0Raw_data/zhaoyang_charge_sta/京AW7531'
data = pd.read_csv('D:/0Raw_data/ftm_p.csv',encoding='gbk')

4、總結

因為本人主要研究車輛網大資料分析,在不上spark的情況下,也不可能一個一個配置每個檔案的編碼問題,所以我一般用魯棒性較好的解決方案如下,供參考。若能解決您的問題,請點個贊,歡迎交流。

import pandas as pd
file_path = 'D:/0Raw_data/zhaoyang_charge_sta/京AW7531'
f = open(file_path,encoding='utf-8')
data = pd.read_csv(f)
f.close()


相關文章