Pandas可能是廣大Python數據分析師最為常用的庫了,其提供了從數據讀取、數據預處理到數據分析以及數據可視化的全流程操作。其中,在數據讀取階段,應用pd.read_csv讀取csv文件是常用的文件存儲格式之一。今天,本文就來分享關於pandas讀取csv文件時2個非常有趣且有用的參數。
打開jupyter lab,鍵入pd.read_csv?並運行即可查看該API的常用參數註解,主要如下:其中大部分參數相信大家都應該已經非常熟悉,本文來介紹2個參數的不一樣用法。
給定一個模擬的csv文件,其中主要數據如下:
可以看到,這個csv文件主要有3列,列標題分別為year、month和day,但特殊之處在於其分隔符不是常規的comma,而是一個冒號。另外也顯而易見的是這三列拼湊起來是一個正常的年月日的日期格式。所以今天本文就來分享如何通過這兩個參數來實現巧妙的加載和自動解析。
既然是csv文件(Comma-Separated Values),所以read_csv的默認sep是",",然而對於那些不是","分隔符的文件,該默認參數下顯然是不能正確解析的。此時,當然可以簡單的通過傳入正確的分隔符作為sep參數來實現正確加載,但如果文件的分隔符是未知的呢?實際上,我們可以無需傳入分隔符,而交由解析器自動解析。其中,值得注意的有兩點:
sep默認為",",如果傳入None,則C引擎由於不能自動檢測和解析分隔符,所以Python引擎將會自動應用於解析和檢測(當然,C引擎的解析速度要更快一些,所以實際上這兩種解析引擎是各有利弊)
如果sep傳入參數超過1個字符,則其將會被視作正則表達式。實際上這也是一個強大的功能,但應用場景不如前者實用
其中,可以看出parse_dates參數默認為False,同時支持4種自定義格式的參數的傳遞,包括:
傳入bool值,若傳入True值,則將嘗試解析索引列
傳入列表,並將列表中的每一列嘗試解析為日期格式;
傳入嵌套列表,並嘗試將每個子列表中的所有列拼接後解析為日期格式;
出啊如字典,其中key為解析後的新列名,value為原文件中的待解析的列索引的列表,例如示例中{'foo': [1, 3]}即是用於將原文件中的1和3列拼接解析,並重命名為foo
基於上述理解,完成前面的特殊csv文件中三列拼接解析為日期的需求就非常容易,即將0/1/2列拼接解析就可以了。實現如下:不得不說,pandas提供的這些函數的參數可真夠豐富的了!
相關閱讀:
點個在看可好