小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python數(shù)據(jù)分析常用函數(shù)及參數(shù)詳解,可以留著以備不時(shí)之需

 excel05 2020-08-15

利用Python進(jìn)行數(shù)據(jù)分析最核心的庫(kù)就是Pandas,可以說,掌握了Pandas庫(kù),Python數(shù)據(jù)分析就屬于中階水平了。

在《一次簡(jiǎn)單、完整的全流程數(shù)據(jù)分析,讓我們不再害怕Python 》一文中我們介紹了Python進(jìn)行數(shù)據(jù)分析全流程的幾個(gè)主要函數(shù)。但由于實(shí)際中的分析需求可能比較復(fù)雜,就要求對(duì)數(shù)據(jù)做更加復(fù)雜的處理。

所以,我們有必要提前準(zhǔn)備一些常用的函數(shù),這些函數(shù)不用全部會(huì),知道有這些函數(shù),并做到在我們要實(shí)現(xiàn)數(shù)據(jù)處理邏輯時(shí),知道有什么函數(shù)可用就夠了。

為了便于學(xué)習(xí)這些函數(shù),本文按照各自類型進(jìn)行了分門別類。

幾點(diǎn)注意事項(xiàng)


在介紹具體的函數(shù)時(shí),說幾點(diǎn)注意事項(xiàng):

  • 初學(xué)時(shí)最好習(xí)慣于寫參數(shù)名稱;
  • 根據(jù)函數(shù)的作用去理解它可以作用于哪種對(duì)象,又會(huì)返回何種對(duì)象;
  • 函數(shù)(也就是對(duì)象的方法)需要有括號(hào),查看對(duì)象屬性沒有括號(hào)。
  • axis=i,表示i維進(jìn)行變化,而其他維度不變。例如,當(dāng)i=0時(shí),就是說行維度值進(jìn)行變化,其它維度不變,這就表明是按列進(jìn)行處理。

常用函數(shù)


為了便于我們掌握,我們結(jié)合數(shù)據(jù)分析的流程和其內(nèi)部函數(shù)的作用,將其分為以下幾類,具體見下圖。

Python數(shù)據(jù)分析常用函數(shù)及參數(shù)詳解,可以留著以備不時(shí)之需

(1)對(duì)象創(chuàng)建

pandas中有兩種重要對(duì)象:Series和DataFrame。前者類似一維數(shù)組,后者可看成Excel中的表格數(shù)據(jù)。后文將用df表示任意的DataFrame對(duì)象,用s表示任意的Series對(duì)象,用pd表示pandas庫(kù)。

df.duplicated(subset=['col'],keep=first) #各行是否是重復(fù)行,返回Series,keep參數(shù)為first,last,False,first意思是第一次出現(xiàn)的重復(fù)值保留。df.drop_duplicates(subset=['col'],keep=first,ignore_index=True) #根據(jù)列刪除重復(fù)行,返回刪除后的結(jié)果數(shù)據(jù)df.fillna(value=,inplace=) #用value值填充na,返回填充后的結(jié)果數(shù)據(jù)df.dropna(axis=0,how='any',inplace=False) #axis=0即行,how有‘a(chǎn)ny’和‘a(chǎn)ll’兩個(gè)選項(xiàng),all表示所有值都為NA才刪除df.drop(labels=0,columns=['col1'],axis=0,) #刪除指定列,也可以刪除行,axis作用不大 df.rename(index={'row1':'A'},columns={'col1':'A1'}) df.replace(to_replace=np.nan,value=0,inplace=False) #替換df值,前后值可以用字典表,{1:‘A', '2':'B'}

(2)數(shù)據(jù)讀取

數(shù)據(jù)讀取重點(diǎn)掌握以下三種。

pd.read_table(filename, sep='\t', header=0, index_col=None,……)#要讀取的文件名稱是必須輸入的參數(shù),其余為可選項(xiàng),header為要選取哪一行作為列名稱,默認(rèn)第一行pd.read_csv(filename, sep=',', header=0, index_col=None,……) #與上面的函數(shù)用法大致相同pd.read_excel(filename,sheet_name=0, header=0,index_col=None,……) #從Excel文件讀入數(shù)據(jù),增加了sheet_name參數(shù)的選項(xiàng),代表要讀取第幾個(gè)工作表的數(shù)據(jù)

(3)數(shù)據(jù)描述

在讀完數(shù)據(jù)后,我們要先查看數(shù)據(jù)的整體情況。

df.info() #查看數(shù)據(jù)框基本信息,包含多少行和列,每列什么類型等等df.descirbe() #查看數(shù)據(jù)的整體描述,統(tǒng)計(jì)的是數(shù)值型列df.head(n) #查看前ndf.tail(n) #查看后ndf.count(axis=0) #非空值個(gè)數(shù),返回Series,0為按列統(tǒng)計(jì),1為按行統(tǒng)計(jì)df.isna()#返回每個(gè)元素是否是缺失值的bool數(shù)據(jù)框df.isnull()#返回每個(gè)元素是否是空值的bool數(shù)據(jù)框df.columns#返回Index類型的列的集合,因?yàn)榱忻Q是屬性,所以沒有括號(hào)df.dtypes#每一列的數(shù)據(jù)類型df.index#行索引名,返回Index類型的索引的集合df.shape#返回(行數(shù),列數(shù))格式的元組df.values#值的二維數(shù)組,返回numpy.ndarray對(duì)象s.nunique()#返回唯一值個(gè)數(shù)s.unique()#唯一值數(shù)據(jù),返回array格式

(3)數(shù)據(jù)篩選

數(shù)據(jù)篩選的本質(zhì)無外乎就是根據(jù)行和列的特性來選擇滿足我們需求的數(shù)據(jù),掌握這些基本的篩選方法就可以組合復(fù)雜的篩選方法。

df['col1']#選擇某一列,返回的是Series類型df[['col1']]#選擇某一列,返回的是DataFrame類型df[df['col1'] > 1] #選取滿足條件的行,df['col']>1返回的還是一個(gè)數(shù)據(jù)框,只是每個(gè)值為booldf.query('col1 > 1') #這種方法也可選取滿足條件的行df.loc[m:n] #按照行索引選取m~n行,注意是包含ndf.loc[m:n,'col1':'coln']#注意loc函數(shù)的參數(shù)都是索引名df.iloc[m:n] #獲取從m~n-1行,iloc函數(shù)代表的是位置,即參數(shù)都是數(shù)字,代表第幾行第幾列df.select_dtypes(include=None, exclude=None) #按照數(shù)據(jù)類型選擇列df.isin(values=) #數(shù)據(jù)框中數(shù)據(jù)是否存在于values中,返回的是DataFrame類型

(4)數(shù)據(jù)清洗

數(shù)據(jù)清洗主要是一些重復(fù)值、缺失值和索引名稱等問題的處理。

df.duplicated(subset=['col'],keep=first) #各行是否是重復(fù)行,返回Series,keep參數(shù)為first,last,False,first意思是第一次出現(xiàn)的重復(fù)值保留。df.drop_duplicates(subset=['col'],keep=first,ignore_index=True) #根據(jù)列刪除重復(fù)行,返回刪除后的結(jié)果數(shù)據(jù)df.fillna(value=,inplace=) #用value值填充na,返回填充后的結(jié)果數(shù)據(jù)df.dropna(axis=0,how='any',inplace=False)#axis=0即行,how有‘a(chǎn)ny’和‘a(chǎn)ll’兩個(gè)選項(xiàng),all表示所有值都為NA才刪除df.drop(labels=0,columns=['col1'],axis=0,) #刪除指定列,也可以刪除行,axis作用不大 df.rename(index={'row1':'A'},columns={'col1':'A1'}) #重命名行索引和列名稱df.replace(to_replace=np.nan,value=0,inplace=False) #替換df值,前后值可以用字典表示,如{'a':‘A', 'b':'B'}df.columns=pd.MultiIndex.from_tuples(indx) #構(gòu)建層次化索引

(5)數(shù)據(jù)處理

數(shù)據(jù)處理的范疇很廣,包含數(shù)據(jù)的統(tǒng)計(jì)匯總,也包含數(shù)據(jù)的轉(zhuǎn)換,做這一塊時(shí)腦中要同時(shí)進(jìn)行抽象處理,便于查看邏輯是否有錯(cuò)。

pd.merge(df1, df2, on='col1',left_on='col1',right_on='col2',how='inner',sort=False) #how有outer,left,right選項(xiàng),默認(rèn)inner,suffixes表示在相同的列名添加后綴pd.concat([df1,df2,df3], axis=0,join='outer',ignore_index=False,keys=['x','y','z'])#按行或是按列拼接多個(gè)數(shù)據(jù)框或Series,axis=0為按列拼接,即增加在行下面,key添加層次化索引df1.append(df2,ignore_index=False)#可為df也可為s,按列添加,即添加行,ignor_index=False意思是都按照原先的行索引值df.stack(level=-1,dropna=True) #列旋轉(zhuǎn)成行,也就是列名變?yōu)樾兴饕?,原索引變成多層索引?level表示選取哪個(gè)索引進(jìn)行轉(zhuǎn)換,-1表示最內(nèi)層的索引,0表示第一層索引df.unstack(level=-1,fill_value=None) #行轉(zhuǎn)列,默認(rèn)從最內(nèi)層索引開始df.pivot_table(index=['col1','col2'],values=['col3'],columns=['col4'],aggfunc='count')#類似于Excel中的數(shù)據(jù)透視表,index表示選擇行,column是選擇列,values是進(jìn)行函數(shù)計(jì)算的列df.groupby(['col1'])#根據(jù)列對(duì)數(shù)據(jù)框進(jìn)行分組,返回分組對(duì)象df.groupby(['col1'])['col2'].count()#表示根據(jù)col1列進(jìn)行分組,統(tǒng)計(jì)col2列的行數(shù)。這種方式是最為常用的統(tǒng)計(jì)匯總方法df.agg({'col1':'count','col2':'sum'},axis=0) #agg是聚合的別名,表示對(duì)不同列用不同函數(shù)進(jìn)行統(tǒng)計(jì),返回Series對(duì)象df.sort_values(by='col1',axis=0,ascending=True, inplace=False, na_position={'last','first'})#按照某一列對(duì)數(shù)據(jù)框進(jìn)行排序df.apply(lambda x :x.max()-x.min(),axis=0)#默認(rèn)參數(shù)axis=0,表示按列對(duì)數(shù)據(jù)進(jìn)行操作df.applymap(lambda x : 1 if x>0 else 0)#對(duì)數(shù)據(jù)框每一個(gè)數(shù)據(jù)進(jìn)行操作,返回DataFrame格式s.map(lambda x : 1 if x>0 else 0)#對(duì)Series的每一個(gè)數(shù)據(jù)進(jìn)行,不能對(duì)DataFrame操作s.value_counts()#對(duì)Series中數(shù)據(jù)進(jìn)行分類匯總pd.cut(s,bins=[-np.inf,0,np.inf],labels=list('abc')) #bins為左開右閉區(qū)間,將Series數(shù)據(jù)進(jìn)行分類df.where(df<0,0) #與numpy的where函數(shù)有不同,后面的值表示不滿足條件的賦值為0,滿足的話就不變pd.date_range(start='2020-01-01',end='2020-02-01',periods=,freq='D')#periods為期數(shù),注意不要沖突,freq為類型,種類有很多,默認(rèn)是天,M為月尾,MS為月初

結(jié)語(yǔ)


函數(shù)還有很多,但都不太常見了。我們平時(shí)學(xué)習(xí)的時(shí)候可以養(yǎng)成記筆記的好習(xí)慣,即把出現(xiàn)的函數(shù)記下來,分門別類地匯總在一起,等記不清時(shí)就可以直接在匯總中查找了,閑暇時(shí)也可以瞅一瞅,這樣次數(shù)多了后就會(huì)慢慢全部記住了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多