首頁 > 軟體

pandas讀取csv格式資料時header引數設定方法

2022-02-08 13:01:44

寫在前面

使用pandas中read_csv讀取csv資料時,對於有表頭的資料,將header設定為空(None),會報錯:pandas_libsparsers.pyx in pandas._libs.parsers.raise_parser_error() ParserError: Error tokenizing data. C error: Expected 4 fields in line 2, saw 5

檢視pandas官方檔案發現,read_csv讀取時會自動識別表頭,資料有表頭時不能設定header為空(預設讀取第一行,即header=0);資料無表頭時,若不設定header,第一行資料會被視為表頭,應傳入names引數設定表頭名稱或設定header=None

參考檔案

這是pandas的read_csv的官方檔案: python - pandas.read_csv

read_csv的header引數

使用pandas的read_csv讀取資料時,header參數列頭名稱設定(即各列資料對應名稱),下面是檔案中對header引數的說明:


其中指出,表頭可根據資料格式推斷各列名稱:預設情況下,

  • 若未傳入names引數,則根據輸入檔案的第一行推斷是否有表頭;
  • 若傳入names引數,則names傳入的引數作為表頭(原資料有表頭則會替換原有表頭)。

下面是對read_csv的header引數測試

header引數測試

測試資料 兩個csv(用逗號隔開)格式的檔案,這裡是用Excel開啟,分別是帶有表頭和不帶表頭的資料:

預設header 下面是header預設情況下,對有表頭的資料識別第一行作為header(即header=0)[ 資料沒有給出index名稱,這裡設定 index_col=False,不設定預設第一列為index(而表頭仍是4列,最後一列資料為NaN), index_col引數與 header類似可自動識別。

設定header=None 對有表頭的資料設定 header=None則會報錯:

 

對無表頭的資料,則需設定 header=None,否則第一行資料被作為表頭:

思考

pandas是如何識別或區分資料和表頭名稱的 ?

  • 對於index_col來說,若資料都是相同型別,比如數值型,則表示無index,輸出預設index為0,1,2,…;若資料第一列為字元,其他列為數值,則會將第一列視為index;若設定index_col=False, 則表示無index(預設將0, 1, 2,…作為資料的index)
  • header,當第一行為字元,則第一行預設為表頭;當第一行與其他資料型別相同時,也會把第一行當作表頭,所以無表頭時應設定header=None

header傳入list引數(元素代表取對應行號)怎麼用?

read_csv的引數skip_blank_lines=True會忽略註釋行和空行,其中註釋行是用什麼符號註釋的?(試了一下,行首用’#'註釋的不對)

到此這篇關於pandas讀取csv格式資料時header引數設定方法的文章就介紹到這了,更多相關pandas header引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com