讀取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ù)索引)朗恳,或者是與由用戶提供的名稱或從文檔標(biāo)題行推斷的列名相對(duì)應(yīng)的字符串湿颅。 例如,有效的類似數(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)估為True的名稱。 一個(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清酥。