使用Python pandas讀取CSV文件應(yīng)該注意什么-_第1頁
使用Python pandas讀取CSV文件應(yīng)該注意什么-_第2頁
使用Python pandas讀取CSV文件應(yīng)該注意什么-_第3頁
使用Python pandas讀取CSV文件應(yīng)該注意什么-_第4頁
使用Python pandas讀取CSV文件應(yīng)該注意什么-_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第使用Pythonpandas讀取CSV文件應(yīng)該注意什么?4,趙盈盈,Female,2001-6-32,,學(xué)生,畫畫

5,鄭強(qiáng)強(qiáng),男,1991-03-05,南京(nanjing),律師,歷史-政治

如果一切正常的話,在JupyterNotebook中應(yīng)該顯示以下內(nèi)容:

文件編碼格式是最容易出錯(cuò)的問題之一。如果編碼格式不正確,就會(huì)完全讀取不出文件內(nèi)容,出現(xiàn)類似于以下的錯(cuò)誤,讓人完全不知所措:

---------------------------------------------------------------------------

UnicodeDecodeErrorTraceback(mostrecentcalllast)

ipython-input-6-8659adefcfa6inmodule

----1pd.read_csv('people.csv',encoding='gb2312')

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.pyinparser_f(filepath_or_buffer,sep,delimiter,header,names,index_col,usecols,squeeze,prefix,mangle_dupe_cols,dtype,engine,converters,true_values,false_values,skipinitialspace,skiprows,skipfooter,nrows,na_values,keep_default_na,na_filter,verbose,skip_blank_lines,parse_dates,infer_datetime_format,keep_date_col,date_parser,dayfirst,cache_dates,iterator,chunksize,compression,thousands,decimal,lineterminator,quotechar,quoting,doublequote,escapechar,comment,encoding,dialect,error_bad_lines,warn_bad_lines,delim_whitespace,low_memory,memory_map,float_precision)

683)

684

--685return_read(filepath_or_buffer,kwds)

686

687parser_f.__name__=name

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.pyin_read(filepath_or_buffer,kwds)

455

456#Createtheparser.

--457parser=TextFileReader(fp_or_buf,**kwds)

458

459ifchunksizeoriterator:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.pyin__init__(self,f,engine,**kwds)

893self.options["has_index_names"]=kwds["has_index_names"]

894

--895self._make_engine(self.engine)

896

897defclose(self):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.pyin_make_engine(self,engine)

1133def_make_engine(self,engine="c"):

1134ifengine=="c":

-1135self._engine=CParserWrapper(self.f,**self.options)

1136else:

1137ifengine=="python":

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.pyin__init__(self,src,**kwds)

1915kwds["usecols"]=self.usecols

1916

-1917self._reader=parsers.TextReader(src,**kwds)

1918self.unnamed_cols=self._reader.unnamed_cols

1919

pandas\_libs\parsers.pyxinpandas._libs.parsers.TextReader.__cinit__()

pandas\_libs\parsers.pyxinpandas._libs.parsers.TextReader._get_header()

UnicodeDecodeError:'gb2312'codeccan'tdecodebyte0x93inposition2:illegalmultibytesequence

目前對(duì)于中文而言,最常使用的有utf-8和gb2312兩種格式,只需要指定正確的編碼。在不知道編碼的情況下,只需要嘗試兩次即可。padas默認(rèn)的文件編碼格式是utf-8,所以如果出現(xiàn)以上錯(cuò)誤,只需使用encoding=gb2312再嘗試一下即可,如pd.read_csv(file,encoding='gb2312')。

空值是csv中也非常常見,比如以下內(nèi)容:

importpandasaspd

df=pd.read_csv('people.csv')

v1=df['出生地'][3]

print(v1,type(v1))

輸出為:

nanclass'float'

由此可見,空值也是有數(shù)據(jù)類型的,為float類型。

如何判斷空值有兩種方法,可以使用math.isnan(x)也可以使用isinstance(float)。我們知道,DateFrame對(duì)象是包括Series對(duì)象,而在一個(gè)Series對(duì)象中,所有的數(shù)據(jù)類型默認(rèn)是一樣的,所以如果其數(shù)據(jù)類型推斷為字符串(str),那么直接使用math.isnan(x)則會(huì)報(bào)錯(cuò)TypeError:mustberealnumber,notstr錯(cuò)誤,即必需為實(shí)數(shù),不能是字符串。所以,這時(shí)我們還需要使用isinstance(x,flaot)方法。

具體請(qǐng)看這個(gè)示例:

df.出生地=df.出生地.map(lambdax:'其他'ifisinstance(x,float)elsex)

df

方法1:直接使用labmda表達(dá)式

需要對(duì)數(shù)據(jù)列進(jìn)行復(fù)雜操作的時(shí)候,我們可以使用以下函數(shù)時(shí)行相應(yīng)的操作。

df=df.fillna('未知')

df.愛好=df.愛好.map(lambdax:x.split('')[0].split('-')[0].split(',')[0])

df

方法二:使用自定義函數(shù)

在進(jìn)行映射時(shí),如果操作比較簡單,可以使用字典的方式進(jìn)行數(shù)值映射映射(參見下文)。但是如果操作比較復(fù)雜,則需要使用函數(shù)進(jìn)行映射。請(qǐng)看這個(gè)示例,讀取到性別時(shí),內(nèi)容有‘m',‘M',‘Female'等內(nèi)容,現(xiàn)在需要其全部轉(zhuǎn)換為男或女:

defset_sex(s):

ifs.lower()=='m'ors.lower()=='male':

return'男'

elifs.lower()=='female':

return'女'

retur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論