
讀取csv文件是遇到了pandas.read_csv函數(shù)。下面介紹下這個(gè)函數(shù)的用法。
pandas.read_csv原文檔:pandas.read_csv - pandas 0.22.0 documentation
函數(shù)體:
#函數(shù)原型
pandas.read_csv(filepath_or_buffer, sep=', ', usecols=None, engine=None, header='infer',skipfooter=0)
#函數(shù)應(yīng)用實(shí)例
dataframe = read_csv('table.csv', usecols=[1], engine='python', skipfooter=3)
參數(shù)解釋
- filepath_or_buffer:可以是一個(gè)URL或者本地文件。有效的URL包括http,ftp,s3和文件。也可以是本地文件:table.csv(在本機(jī)的絕對(duì)地址)。
- sep:分隔符。如果sep為None,那么C引擎不會(huì)自動(dòng)檢測(cè)到分隔符,但是Python解釋器可以使用,這意味著后者將被使用,并通過(guò)Python的內(nèi)置嗅探工具csv.Sniffer自動(dòng)檢測(cè)分隔符。 另外,長(zhǎng)度超過(guò)1個(gè)字符且與'\ s +'不同的分隔符將被解釋為正則表達(dá)式,并且還將強(qiáng)制使用Python解釋器。 請(qǐng)注意,正則表達(dá)式分隔符很容易忽略帶引號(hào)的數(shù)據(jù)。 正則表達(dá)式示例:'\ r \ t'
- usecols:返回列的一個(gè)子集。 如果是數(shù)組的,所有元素必須是位置索引的(即文檔列中的整數(shù)索引),或者是與由用戶提供的名稱(chēng)或從文檔標(biāo)題行推斷的列名相對(duì)應(yīng)的字符串。 例如,有效的類(lèi)似數(shù)組的usecols參數(shù)應(yīng)該是[0,1,2]或['foo','bar','baz']。如果可調(diào)用,則可調(diào)用函數(shù)將根據(jù)列名進(jìn)行評(píng)估,返回可調(diào)用函數(shù)評(píng)估為T(mén)rue的名稱(chēng)。 一個(gè)有效的可調(diào)用參數(shù)的例子是['AAA','BBB','DDD']中的lambda x:x.upper()。 使用此參數(shù)可以縮短解析時(shí)間并降低內(nèi)存使用量。
- header:指定第幾行來(lái)作為列名,默認(rèn)是數(shù)據(jù)最開(kāi)始的那一行。如果文件中沒(méi)有列名,則默認(rèn)為0,否則設(shè)置為None。如果明確設(shè)定header=0就會(huì)替換掉原來(lái)存在列名。header參數(shù)可以是一個(gè)list例如:[0,1,3],這個(gè)list表示將文件中的這些行作為列標(biāo)題(意味著每一列有多個(gè)標(biāo)題),介于中間的行將被忽略掉(例如本例中的2;本例中的數(shù)據(jù)1,2,4行將被作為多級(jí)標(biāo)題出現(xiàn),第3行數(shù)據(jù)將被丟棄,dataframe的數(shù)據(jù)從第5行開(kāi)始。)。 注意:如果skip_blank_lines=True 那么header參數(shù)忽略注釋行和空行,所以header=0表示第一行數(shù)據(jù)而不是文件的第一行。
- engine:使用的解釋器。{‘c’, ‘python’}二選一。
- skipfooter:文件底部要跳過(guò)的行數(shù)(不支持引擎='c')
對(duì)于讀取csv數(shù)據(jù)需要注意的事情:
我之前就是沒(méi)有注意這一點(diǎn),導(dǎo)致出了問(wèn)題。那就是如果使用pandas.read_csv這個(gè)函數(shù)讀取csv的話,你的數(shù)據(jù)中某行必須作為列的標(biāo)簽,比如這種:
number
1.0
1.0
1.0
1.0
1.0
其中number是標(biāo)簽,當(dāng)header = 0 時(shí),第一行的number是不納入計(jì)數(shù)的,什么意思呢?也就是說(shuō)這個(gè)csv文件讀進(jìn)程序里之后,程序認(rèn)為數(shù)列的第一行的值是1.0,而不會(huì)是number。