Python數(shù)據(jù)分析與應(yīng)用 第3章Matplotlib數(shù)據(jù)可視化基礎(chǔ) 第4章pandas統(tǒng)計(jì)分析基礎(chǔ)_第1頁(yè)
Python數(shù)據(jù)分析與應(yīng)用 第3章Matplotlib數(shù)據(jù)可視化基礎(chǔ) 第4章pandas統(tǒng)計(jì)分析基礎(chǔ)_第2頁(yè)
Python數(shù)據(jù)分析與應(yīng)用 第3章Matplotlib數(shù)據(jù)可視化基礎(chǔ) 第4章pandas統(tǒng)計(jì)分析基礎(chǔ)_第3頁(yè)
Python數(shù)據(jù)分析與應(yīng)用 第3章Matplotlib數(shù)據(jù)可視化基礎(chǔ) 第4章pandas統(tǒng)計(jì)分析基礎(chǔ)_第4頁(yè)
Python數(shù)據(jù)分析與應(yīng)用 第3章Matplotlib數(shù)據(jù)可視化基礎(chǔ) 第4章pandas統(tǒng)計(jì)分析基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Matplotlib數(shù)據(jù)可視化基礎(chǔ)18-5月-251分析特征間的關(guān)系目錄了解繪圖基礎(chǔ)語(yǔ)法與常用參數(shù)2分析特征內(nèi)部數(shù)據(jù)分布與分散狀況3小結(jié)4掌握pyplot基礎(chǔ)語(yǔ)法基本繪圖流程第一部分主要作用是構(gòu)建出一張空白的畫布,并可以選擇是否將整個(gè)畫布劃分為多個(gè)部分,方便在同一幅圖上繪制多個(gè)圖形的情況。最簡(jiǎn)單的繪圖可以省略第一部分,而后直接在默認(rèn)的畫布上進(jìn)行圖形繪制。掌握pyplot基礎(chǔ)語(yǔ)法1.創(chuàng)建畫布與創(chuàng)建子圖函數(shù)名稱函數(shù)作用plt.figure創(chuàng)建一個(gè)空白畫布,可以指定畫布大小,像素。figure.add_subplot創(chuàng)建并選中子圖,可以指定子圖的行數(shù),列數(shù),與選中圖片編號(hào)。第二部分是繪圖的主體部分。其中添加標(biāo)題,坐標(biāo)軸名稱,繪制圖形等步驟是并列的,沒(méi)有先后順序,可以先繪制圖形,也可以先添加各類標(biāo)簽。但是添加圖例一定要在繪制圖形之后。掌握pyplot基礎(chǔ)語(yǔ)法2.添加畫布內(nèi)容函數(shù)名稱函數(shù)作用plt.title在當(dāng)前圖形中添加標(biāo)題,可以指定標(biāo)題的名稱、位置、顏色、字體大小等參數(shù)。plt.xlabel在當(dāng)前圖形中添加x軸名稱,可以指定位置、顏色、字體大小等參數(shù)。plt.ylabel在當(dāng)前圖形中添加y軸名稱,可以指定位置、顏色、字體大小等參數(shù)。plt.xlim指定當(dāng)前圖形x軸的范圍,只能確定一個(gè)數(shù)值區(qū)間,而無(wú)法使用字符串標(biāo)識(shí)。plt.ylim指定當(dāng)前圖形y軸的范圍,只能確定一個(gè)數(shù)值區(qū)間,而無(wú)法使用字符串標(biāo)識(shí)。plt.xticks指定x軸刻度的數(shù)目與取值。plt.yticks指定y軸刻度的數(shù)目與取值。plt.legend指定當(dāng)前圖形的圖例,可以指定圖例的大小、位置、標(biāo)簽。第三部分主要用于保存和顯示圖形。掌握pyplot基礎(chǔ)語(yǔ)法3.存與展示圖形函數(shù)名稱函數(shù)作用plt.savafig保存繪制的圖片,可以指定圖片的分辨率、邊緣的顏色等參數(shù)。plt.show在本機(jī)顯示圖形。pyplot使用rc配置文件來(lái)自定義圖形的各種默認(rèn)屬性,被稱為rc配置或rc參數(shù)。在pyplot中幾乎所有的默認(rèn)屬性都是可以控制的,例如視圖窗口大小以及每英寸點(diǎn)數(shù)、線條寬度、顏色和樣式、坐標(biāo)軸、坐標(biāo)和網(wǎng)格屬性、文本、字體等。設(shè)置pyplot的動(dòng)態(tài)rc參數(shù)設(shè)置pyplot的動(dòng)態(tài)rc參數(shù)線條的常用rc參數(shù)名稱、解釋與取值rc參數(shù)名稱解釋取值lines.linewidth線條寬度取0-10之間的數(shù)值,默認(rèn)為1.5。lines.linestyle線條樣式可取“-”“--”“-.”“:”四種。默認(rèn)為“-”。lines.marker線條上點(diǎn)的形狀可取“o”“D”“h”“.”“,”“S”等20種,默認(rèn)為None。lines.markersize點(diǎn)的大小取0-10之間的數(shù)值,默認(rèn)為1。設(shè)置pyplot的動(dòng)態(tài)rc參數(shù)常用線條類型解釋linestyle取值意義linestyle取值意義-實(shí)線-.點(diǎn)線--長(zhǎng)虛線:短虛線marker取值意義marker取值意義‘o’圓圈‘.’點(diǎn)‘D’菱形‘s’正方形‘h’六邊形1‘*’星號(hào)‘H’六邊形2‘d’小菱形‘-’水平線‘v’一角朝下的三角形‘8’八邊形‘<’一角朝左的三角形‘p’五邊形‘>’一角朝右的三角形‘,’像素‘^’一角朝上的三角形‘+’加號(hào)‘\’豎線‘None’無(wú)‘x’X設(shè)置pyplot的動(dòng)態(tài)rc參數(shù)線條標(biāo)記解釋由于默認(rèn)的pyplot字體并不支持中文字符的顯示,因此需要通過(guò)設(shè)置font.sans-serif參數(shù)改變繪圖時(shí)的字體,使得圖形可以正常顯示中文。同時(shí),由于更改字體后,會(huì)導(dǎo)致坐標(biāo)軸中的部分字符無(wú)法顯示,因此需要同時(shí)更改axes.unicode_minus參數(shù)。除了設(shè)置線條和字體的rc參數(shù)外,還有設(shè)置文本、箱線圖、坐標(biāo)軸、刻度、圖例、標(biāo)記、圖片、圖像保存等rc參數(shù)。具體參數(shù)與取值可以參考官方文檔。設(shè)置pyplot的動(dòng)態(tài)rc參數(shù)注意事項(xiàng)1分析特征間的關(guān)系目錄了解繪圖基礎(chǔ)語(yǔ)法與常用參數(shù)2分析特征內(nèi)部數(shù)據(jù)分布與分散狀況3小結(jié)4散點(diǎn)圖(scatterdiagram)又稱為散點(diǎn)分布圖,是以一個(gè)特征為橫坐標(biāo),另一個(gè)特征為縱坐標(biāo),利用坐標(biāo)點(diǎn)(散點(diǎn))的分布形態(tài)反映特征間的統(tǒng)計(jì)關(guān)系的一種圖形。值是由點(diǎn)在圖表中的位置表示,類別是由圖表中的不同標(biāo)記表示,通常用于比較跨類別的數(shù)據(jù)。繪制散點(diǎn)圖散點(diǎn)圖matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None,**kwargs)常用參數(shù)及說(shuō)明如下表所示。繪制散點(diǎn)圖scatter函數(shù)參數(shù)名稱說(shuō)明x,y接收array。表示x軸和y軸對(duì)應(yīng)的數(shù)據(jù)。無(wú)默認(rèn)。s接收數(shù)值或者一維的array。指定點(diǎn)的大小,若傳入一維array則表示每個(gè)點(diǎn)的大小。默認(rèn)為None。c接收顏色或者一維的array。指定點(diǎn)的顏色,若傳入一維array則表示每個(gè)點(diǎn)的顏色。默認(rèn)為Nonemarker接收特定string。表示繪制的點(diǎn)的類型。默認(rèn)為None。alpha接收0-1的小數(shù)。表示點(diǎn)的透明度。默認(rèn)為None。折線圖(linechart)是一種將數(shù)據(jù)點(diǎn)按照順序連接起來(lái)的圖形。可以看作是將散點(diǎn)圖,按照x軸坐標(biāo)順序連接起來(lái)的圖形。折線圖的主要功能是查看因變量y隨著自變量x改變的趨勢(shì),最適合用于顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù)。同時(shí)還可以看出數(shù)量的差異,增長(zhǎng)趨勢(shì)的變化。繪制折線圖折線圖matplotlib.pyplot.plot(*args,**kwargs)

plot函數(shù)在官方文檔的語(yǔ)法中只要求填入不定長(zhǎng)參數(shù),實(shí)際可以填入的主要參數(shù)主要如下。繪制折線圖plot函數(shù)參數(shù)名稱說(shuō)明x,y接收array。表示x軸和y軸對(duì)應(yīng)的數(shù)據(jù)。無(wú)默認(rèn)。color接收特定string。指定線條的顏色。默認(rèn)為None。linestyle接收特定string。指定線條類型。默認(rèn)為“-”。marker接收特定string。表示繪制的點(diǎn)的類型。默認(rèn)為None。alpha接收0-1的小數(shù)。表示點(diǎn)的透明度。默認(rèn)為None。color參數(shù)的8種常用顏色的縮寫。繪制折線圖plot函數(shù)顏色縮寫代表的顏色顏色縮寫代表的顏色b藍(lán)色m品紅g綠色y黃色r紅色k黑色c青色w白色國(guó)民生產(chǎn)總值數(shù)據(jù)總共有三大產(chǎn)業(yè)的國(guó)民生產(chǎn)總值,以及農(nóng)業(yè)、工業(yè)、建筑、批發(fā)、交通、餐飲、金融、房地產(chǎn)和其他行業(yè)各個(gè)季度的增加值。通過(guò)散點(diǎn)圖分析三大行業(yè)的國(guó)民生產(chǎn)總值可以發(fā)現(xiàn)我國(guó)產(chǎn)業(yè)結(jié)構(gòu)。通過(guò)比較各行業(yè)間季度的增加值則可以發(fā)現(xiàn)國(guó)民經(jīng)濟(jì)的主要貢獻(xiàn)行業(yè)。任務(wù)實(shí)現(xiàn)1.繪制2000-2017各產(chǎn)業(yè)與行業(yè)的國(guó)民生產(chǎn)總值散點(diǎn)圖通過(guò)繪制2000-2017各產(chǎn)業(yè)與行業(yè)的國(guó)民生產(chǎn)總值折線圖,分別能夠發(fā)現(xiàn)我國(guó)經(jīng)濟(jì)各產(chǎn)業(yè)與各行業(yè)增長(zhǎng)趨勢(shì)。任務(wù)實(shí)現(xiàn)2.繪制2000-2017各產(chǎn)業(yè)與行業(yè)的國(guó)民生產(chǎn)總值折線圖1分析特征間的關(guān)系目錄了解繪圖基礎(chǔ)語(yǔ)法與常用參數(shù)2分析特征內(nèi)部數(shù)據(jù)分布與分散狀況3小結(jié)4直方圖(Histogram)又稱質(zhì)量分布圖,是統(tǒng)計(jì)報(bào)告圖的一種,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)所屬類別,縱軸表示數(shù)量或者占比。用直方圖可以比較直觀地看出產(chǎn)品質(zhì)量特性的分布狀態(tài),便于判斷其總體質(zhì)量分布情況。直方圖可以發(fā)現(xiàn)分布表無(wú)法發(fā)現(xiàn)的數(shù)據(jù)模式、樣本的頻率分布和總體的分布。繪制直方圖直方圖matplotlib.pyplot.bar(left,height,width=0.8,bottom=None,hold=None,data=None,**kwargs

)常用參數(shù)及說(shuō)明如下表所示。繪制直方圖bar函數(shù)參數(shù)名稱說(shuō)明left接收array。表示x軸數(shù)據(jù)。無(wú)默認(rèn)。height接收array。表示x軸所代表數(shù)據(jù)的數(shù)量。無(wú)默認(rèn)。width接收0-1之間的float。指定直方圖寬度。默認(rèn)為0.8。color接收特定string或者包含顏色字符串的array。表示直方圖顏色。默認(rèn)為None。餅圖(PieGraph)是將各項(xiàng)的大小與各項(xiàng)總和的比例顯示在一張“餅”中,以“餅”的大小來(lái)確定每一項(xiàng)的占比。餅圖可以比較清楚地反映出部分與部分、部分與整體之間的比例關(guān)系,易于顯示每組數(shù)據(jù)相對(duì)于總數(shù)的大小,而且顯現(xiàn)方式直觀。繪制餅圖餅圖matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,…)常用參數(shù)及說(shuō)明如下表所示。繪制餅圖pie函數(shù)參數(shù)名稱說(shuō)明參數(shù)名稱說(shuō)明x接收array。表示用于繪制撇的數(shù)據(jù)。無(wú)默認(rèn)。autopct接收特定string。指定數(shù)值的顯示方式。默認(rèn)為None。explode接收array。表示指定項(xiàng)離餅圖圓心為n個(gè)半徑。默認(rèn)為None。pctdistance接收f(shuō)loat。指定每一項(xiàng)的比例和距離餅圖圓心n個(gè)半徑。默認(rèn)為0.6。labels接收array。指定每一項(xiàng)的名稱。默認(rèn)為None。labeldistance接收f(shuō)loat。指定每一項(xiàng)的名稱和距離餅圖圓心多少個(gè)半徑。默認(rèn)為1.1。color接收特定string或者包含顏色字符串的array。表示餅圖顏色。默認(rèn)為None。radius接收f(shuō)loat。表示餅圖的半徑。默認(rèn)為1。箱線圖(boxplot)也稱箱須圖,其繪制需使用常用的統(tǒng)計(jì)量,能提供有關(guān)數(shù)據(jù)位置和分散情況的關(guān)鍵信息,尤其在比較不同特征時(shí),更可表現(xiàn)其分散程度差異。箱線圖利用數(shù)據(jù)中的五個(gè)統(tǒng)計(jì)量(最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)和最大值)來(lái)描述數(shù)據(jù),它也可以粗略地看出數(shù)據(jù)是否具有對(duì)稱性、分布的分散程度等信息,特別可以用于對(duì)幾個(gè)樣本的比較。繪制箱線圖箱線圖matplotlib.pyplot.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,meanline=None,labels=None,…)常用參數(shù)及說(shuō)明如下表所示。繪制箱線圖boxplot函數(shù)參數(shù)名稱說(shuō)明參數(shù)名稱說(shuō)明x接收array。表示用于繪制箱線圖的數(shù)據(jù)。無(wú)默認(rèn)。positions接收array。表示圖形位置。默認(rèn)為None。notch接收boolean。表示中間箱體是否有缺口。默認(rèn)為None。widths接收scalar或者array。表示每個(gè)箱體的寬度。默認(rèn)為None。sym接收特定sting。指定異常點(diǎn)形狀。默認(rèn)為None。labels接收array。指定每一個(gè)箱線圖的標(biāo)簽。默認(rèn)為None。vert接收boolean。表示圖形是橫向縱向或者橫向。默認(rèn)為None。meanline接收boolean。表示是否顯示均值線。默認(rèn)為False。通過(guò)直方圖分析2000年第一季度和2017年第一季度之間的三大產(chǎn)業(yè)的國(guó)民生產(chǎn)總值,可以發(fā)現(xiàn)各產(chǎn)業(yè)絕對(duì)數(shù)值之間的關(guān)系,并通過(guò)對(duì)比發(fā)現(xiàn)產(chǎn)業(yè)結(jié)構(gòu)的變化。同理可以得出行業(yè)間的絕對(duì)數(shù)值關(guān)系以及17年來(lái)行業(yè)發(fā)展?fàn)顩r。任務(wù)實(shí)現(xiàn)1.繪制國(guó)民生產(chǎn)總值構(gòu)成分布直方圖通過(guò)分析2000年與2017年不同的產(chǎn)業(yè)和行業(yè)在國(guó)民生產(chǎn)總值中的占比,可以發(fā)現(xiàn)我國(guó)產(chǎn)業(yè)結(jié)構(gòu)變化和行業(yè)變遷。任務(wù)實(shí)現(xiàn)2.繪制國(guó)民生產(chǎn)總值構(gòu)成分布餅圖通過(guò)分析2000年至2017年不同的產(chǎn)業(yè)和行業(yè)在國(guó)民生產(chǎn)總值中的分散情況,可以發(fā)現(xiàn)整體分散情況,從而判斷整體增速是否加快。任務(wù)實(shí)現(xiàn)3.繪制國(guó)民生產(chǎn)總值分散情況箱線圖1分析特征間的關(guān)系目錄了解繪圖基礎(chǔ)語(yǔ)法與常用參數(shù)2分析特征內(nèi)部數(shù)據(jù)分布與分散狀況3小結(jié)4本章以2000至2017年各季度國(guó)民生產(chǎn)總值數(shù)據(jù)為例,介紹了pyplot繪圖的基本語(yǔ)法,常用參數(shù)。介紹了分析特征間相關(guān)關(guān)系的散點(diǎn)圖。分析特征間趨勢(shì)關(guān)系的折線圖。分析特征內(nèi)部數(shù)據(jù)分布的直方圖和餅狀圖。以及分析特征內(nèi)部數(shù)據(jù)分散情況的箱線圖。為讀者后續(xù)深入學(xué)習(xí)Matplotlib數(shù)據(jù)可視化打下了深厚的基礎(chǔ)。小結(jié)pandas統(tǒng)計(jì)分析基礎(chǔ)1掌握DataFrame的常用操作目錄讀寫不同數(shù)據(jù)源的數(shù)據(jù)2轉(zhuǎn)換與處理時(shí)間序列數(shù)據(jù)3pandas提供了讀取與存儲(chǔ)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)的函數(shù)與方法。除了pandas庫(kù)外,還需要使用SQLAlchemy庫(kù)建立對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接。SQLAlchemy配合相應(yīng)數(shù)據(jù)庫(kù)的Python連接工具(例如MySQL數(shù)據(jù)庫(kù)需要安裝mysqlclient或者pymysql庫(kù)),使用create_engine函數(shù),建立一個(gè)數(shù)據(jù)庫(kù)連接。creat_engine中填入的是一個(gè)連接字符串。在使用Python的SQLAlchemy時(shí),MySQL和Oracle數(shù)據(jù)庫(kù)連接字符串的格式如下

數(shù)據(jù)庫(kù)產(chǎn)品名+連接工具名://用戶名:密碼@數(shù)據(jù)庫(kù)IP地址:數(shù)據(jù)庫(kù)端口號(hào)/數(shù)據(jù)庫(kù)名稱?charset=數(shù)據(jù)庫(kù)數(shù)據(jù)編碼讀寫數(shù)據(jù)庫(kù)數(shù)據(jù)1.數(shù)據(jù)庫(kù)數(shù)據(jù)讀取read_sql_table只能夠讀取數(shù)據(jù)庫(kù)的某一個(gè)表格,不能實(shí)現(xiàn)查詢的操作。

pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,columns=None)read_sql_query則只能實(shí)現(xiàn)查詢操作,不能直接讀取數(shù)據(jù)庫(kù)中的某個(gè)表。

pandas.read_sql_query(sql,con,index_col=None,coerce_float=True)read_sql是兩者的綜合,既能夠讀取數(shù)據(jù)庫(kù)中的某一個(gè)表,也能夠?qū)崿F(xiàn)查詢操作。

pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)讀寫數(shù)據(jù)庫(kù)數(shù)據(jù)1.數(shù)據(jù)庫(kù)數(shù)據(jù)讀取參數(shù)名稱說(shuō)明sqlortable_name接收string。表示讀取的數(shù)據(jù)的表名或者sql語(yǔ)句。無(wú)默認(rèn)。con接收數(shù)據(jù)庫(kù)連接。表示數(shù)據(jù)庫(kù)連接信息。無(wú)默認(rèn)index_col接收int,sequence或者False。表示設(shè)定的列作為行名,如果是一個(gè)數(shù)列則是多重索引。默認(rèn)為None。coerce_float接收boolean。將數(shù)據(jù)庫(kù)中的decimal類型的數(shù)據(jù)轉(zhuǎn)換為pandas中的float64類型的數(shù)據(jù)。默認(rèn)為True。columns接收l(shuí)ist。表示讀取數(shù)據(jù)的列名。默認(rèn)為None。讀寫數(shù)據(jù)庫(kù)數(shù)據(jù)1.數(shù)據(jù)庫(kù)數(shù)據(jù)讀取pandas三個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)讀取函數(shù)的參數(shù)幾乎完全一致,唯一的區(qū)別在于傳入的是語(yǔ)句還是表名。數(shù)據(jù)庫(kù)數(shù)據(jù)讀取有三個(gè)函數(shù),但數(shù)據(jù)存儲(chǔ)則只有一個(gè)to_sql方法。DataFrame.to_sql(name,con,schema=None,if_exists=’fail’,index=True,index_label=None,dtype=None)讀寫數(shù)據(jù)庫(kù)數(shù)據(jù)2.數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)參數(shù)名稱說(shuō)明name接收string。代表數(shù)據(jù)庫(kù)表名。無(wú)默認(rèn)。con接收數(shù)據(jù)庫(kù)連接。無(wú)默認(rèn)。if_exists接收f(shuō)ail,replace,append。fail表示如果表名存在則不執(zhí)行寫入操作;replace表示如果存在,將原數(shù)據(jù)庫(kù)表刪除,再重新創(chuàng)建;append則表示在原數(shù)據(jù)庫(kù)表的基礎(chǔ)上追加數(shù)據(jù)。默認(rèn)為fail。index接收boolean。表示是否將行索引作為數(shù)據(jù)傳入數(shù)據(jù)庫(kù)。默認(rèn)True。index_label接收string或者sequence。代表是否引用索引名稱,如果index參數(shù)為True此參數(shù)為None則使用默認(rèn)名稱。如果為多重索引必須使用sequence形式。默認(rèn)為None。dtype接收dict。代表寫入的數(shù)據(jù)類型(列名為key,數(shù)據(jù)格式為values)。默認(rèn)為None。文本文件是一種由若干行字符構(gòu)成的計(jì)算機(jī)文件,它是一種典型的順序文件。csv是一種逗號(hào)分隔的文件格式,因?yàn)槠浞指舴灰欢ㄊ嵌禾?hào),又被稱為字符分隔文件,文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。讀寫文本文件1.文本文件讀取使用read_table來(lái)讀取文本文件。pandas.read_table(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)使用read_csv函數(shù)來(lái)讀取csv文件。pandas.read_csv(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)讀寫文本文件1.文本文件讀取read_table和read_csv常用參數(shù)及其說(shuō)明。讀寫文本文件1.文本文件讀取參數(shù)名稱說(shuō)明filepath接收string。代表文件路徑。無(wú)默認(rèn)。sep接收string。代表分隔符。read_csv默認(rèn)為“,”,read_table默認(rèn)為制表符“[Tab]”。header接收int或sequence。表示將某行數(shù)據(jù)作為列名。默認(rèn)為infer,表示自動(dòng)識(shí)別。names接收array。表示列名。默認(rèn)為None。index_col接收int、sequence或False。表示索引列的位置,取值為sequence則代表多重索引。默認(rèn)為None。dtype接收dict。代表寫入的數(shù)據(jù)類型(列名為key,數(shù)據(jù)格式為values)。默認(rèn)為None。engine接收c或者python。代表數(shù)據(jù)解析引擎。默認(rèn)為c。nrows接收int。表示讀取前n行。默認(rèn)為None。read_table和read_csv函數(shù)中的sep參數(shù)是指定文本的分隔符的,如果分隔符指定錯(cuò)誤,在讀取數(shù)據(jù)的時(shí)候,每一行數(shù)據(jù)將連成一片。header參數(shù)是用來(lái)指定列名的,如果是None則會(huì)添加一個(gè)默認(rèn)的列名。encoding代表文件的編碼格式,常用的編碼有utf-8、utf-16、gbk、gb2312、gb18030等。如果編碼指定錯(cuò)誤數(shù)據(jù)將無(wú)法讀取,IPython解釋器會(huì)報(bào)解析錯(cuò)誤。讀寫文本文件1.文本文件讀取文本文件的存儲(chǔ)和讀取類似,結(jié)構(gòu)化數(shù)據(jù)可以通過(guò)pandas中的to_csv函數(shù)實(shí)現(xiàn)以csv文件格式存儲(chǔ)文件。DataFrame.to_csv(path_or_buf=None,sep=’,’,na_rep=”,columns=None,header=True,index=True,index_label=None,mode=’w’,encoding=None)讀寫文本文件參數(shù)名稱說(shuō)明參數(shù)名稱說(shuō)明path_or_buf接收string。代表文件路徑。無(wú)默認(rèn)。index接收boolean,代表是否將行名(索引)寫出。默認(rèn)為True。sep接收string。代表分隔符。默認(rèn)為“,”。index_labels接收sequence。表示索引名。默認(rèn)為None。na_rep接收string。代表缺失值。默認(rèn)為“”。mode接收特定string。代表數(shù)據(jù)寫入模式。默認(rèn)為w。columns接收l(shuí)ist。代表寫出的列名。默認(rèn)為None。encoding接收特定string。代表存儲(chǔ)文件的編碼格式。默認(rèn)為None。header接收boolean,代表是否將列名寫出。默認(rèn)為True。2.文本文件儲(chǔ)存pandas提供了read_excel函數(shù)來(lái)讀取“xls”“xlsx”兩種Excel文件。pandas.read_excel(io,sheetname=0,header=0,index_col=None,names=None,dtype=None)讀寫Excel文件參數(shù)名稱說(shuō)明io接收string。表示文件路徑。無(wú)默認(rèn)。sheetname接收string、int。代表excel表內(nèi)數(shù)據(jù)的分表位置。默認(rèn)為0。header接收int或sequence。表示將某行數(shù)據(jù)作為列名。默認(rèn)為infer,表示自動(dòng)識(shí)別。names接收int、sequence或者False。表示索引列的位置,取值為sequence則代表多重索引。默認(rèn)為None。index_col接收int、sequence或者False。表示索引列的位置,取值為sequence則代表多重索引。默認(rèn)為None。dtype接收dict。代表寫入的數(shù)據(jù)類型(列名為key,數(shù)據(jù)格式為values)。默認(rèn)為None。1.Excel文件讀取將文件存儲(chǔ)為Excel文件,可以使用to_excel方法。其語(yǔ)法格式如下。DataFrame.to_excel(excel_writer=None,sheetname=None’,na_rep=”,header=True,index=True,index_label=None,mode=’w’,encoding=None)to_csv方法的常用參數(shù)基本一致,區(qū)別之處在于指定存儲(chǔ)文件的文件路徑參數(shù)名稱為excel_writer,并且沒(méi)有sep參數(shù),增加了一個(gè)sheetnames參數(shù)用來(lái)指定存儲(chǔ)的Excelsheet的名稱,默認(rèn)為sheet1。讀寫Excel文件2.Excel文件儲(chǔ)存1掌握DataFrame的常用操作目錄讀寫不同數(shù)據(jù)源的數(shù)據(jù)2轉(zhuǎn)換與處理時(shí)間序列數(shù)據(jù)3函數(shù)返回值values元素index索引columns列名dtypes類型size元素個(gè)數(shù)ndim維度數(shù)shape數(shù)據(jù)形狀(行列數(shù)目)查看DataFrame的常用屬性基礎(chǔ)屬性對(duì)單列數(shù)據(jù)的訪問(wèn):DataFrame的單列數(shù)據(jù)為一個(gè)Series。根據(jù)DataFrame的定義可以知曉DataFrame是一個(gè)帶有標(biāo)簽的二維數(shù)組,每個(gè)標(biāo)簽相當(dāng)每一列的列名。有以下兩種方式來(lái)實(shí)現(xiàn)對(duì)單列數(shù)據(jù)的訪問(wèn)。以字典訪問(wèn)某一個(gè)key的值的方式使用對(duì)應(yīng)的列名,實(shí)現(xiàn)單列數(shù)據(jù)的訪問(wèn)。以屬性的方式訪問(wèn),實(shí)現(xiàn)單列數(shù)據(jù)的訪問(wèn)。(不建議使用,易引起混淆)查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——數(shù)據(jù)基本查看方式對(duì)某一列的某幾行訪問(wèn):訪問(wèn)DataFrame中某一列的某幾行時(shí),單獨(dú)一列的DataFrame可以視為一個(gè)Series(另一種pandas提供的類,可以看作是只有一列的DataFrame),而訪問(wèn)一個(gè)Series基本和訪問(wèn)一個(gè)一維的ndarray相同。對(duì)多列數(shù)據(jù)訪問(wèn):訪問(wèn)DataFrame多列數(shù)據(jù)可以將多個(gè)列索引名稱視為一個(gè)列表,同時(shí)訪問(wèn)DataFrame多列數(shù)據(jù)中的多行數(shù)據(jù)和訪問(wèn)單列數(shù)據(jù)的多行數(shù)據(jù)方法基本相同。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——數(shù)據(jù)基本查看方式對(duì)某幾行訪問(wèn):如果只是需要訪問(wèn)DataFrame某幾行數(shù)據(jù)的實(shí)現(xiàn)方式則和上述的訪問(wèn)多列多行相似,選擇所有列,使用“:”代替即可。head和tail也可以得到多行數(shù)據(jù),但是用這兩種方法得到的數(shù)據(jù)都是從開始或者末尾獲取的連續(xù)數(shù)據(jù)。默認(rèn)參數(shù)為訪問(wèn)5行,只要在方法后方的“()”中填入訪問(wèn)行數(shù)即可實(shí)現(xiàn)目標(biāo)行數(shù)的查看。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——數(shù)據(jù)基本查看方式loc方法是針對(duì)DataFrame索引名稱的切片方法,如果傳入的不是索引名稱,那么切片操作將無(wú)法執(zhí)行。利用loc方法,能夠?qū)崿F(xiàn)所有單層索引切片操作。loc方法使用方法如下。

DataFrame.loc[行索引名稱或條件,列索引名稱]iloc和loc區(qū)別是iloc接收的必須是行索引和列索引的位置。iloc方法的使用方法如下。

DataFrame.iloc[行索引位置,列索引位置]查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——loc,iloc訪問(wèn)方式使用loc方法和iloc實(shí)現(xiàn)多列切片,其原理的通俗解釋就是將多列的列名或者位置作為一個(gè)列表或者數(shù)據(jù)傳入。使用loc,iloc方法可以取出DataFrame中的任意數(shù)據(jù)。在loc使用的時(shí)候內(nèi)部傳入的行索引名稱如果為一個(gè)區(qū)間,則前后均為閉區(qū)間;iloc方法使用時(shí)內(nèi)部傳入的行索引位置或列索引位置為區(qū)間時(shí),則為前閉后開區(qū)間。loc內(nèi)部還可以傳入表達(dá)式,結(jié)果會(huì)返回滿足表達(dá)式的所有值。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——loc,iloc訪問(wèn)方式若使用detail.iloc[detail['order_id']=='458',[1,5]]讀取數(shù)據(jù),則會(huì)報(bào)錯(cuò),原因在于此處條件返回的為一個(gè)布爾值Series,而iloc可以接收的數(shù)據(jù)類型并不包括Series。根據(jù)Series的構(gòu)成只要取出該Series的values就可以了。需改為detail.iloc[(detail['order_id']=='458').values,[1,5]])。loc更加靈活多變,代碼的可讀性更高,iloc的代碼簡(jiǎn)潔,但可讀性不高。具體在數(shù)據(jù)分析工作中使用哪一種方法,根據(jù)情況而定,大多數(shù)時(shí)候建議使用loc方法。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——loc,iloc訪問(wèn)方式ix方法更像是loc和iloc兩種切片方法的融合。ix方法在使用時(shí)既可以接收索引名稱也可以接收索引位置。其使用方法如下。

DataFrame.ix[行索引的名稱或位置或者條件,列索引名稱或位置]使用ix方法時(shí)有個(gè)注意事項(xiàng),第一條,當(dāng)索引名稱和位置存在部分重疊時(shí),ix默認(rèn)優(yōu)先識(shí)別名稱。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——切片方法之ix控制ix方法需要注意以下幾點(diǎn)。使用ix參數(shù)時(shí),盡量保持行索引名稱和行索引位置重疊,使用時(shí)就無(wú)須考慮取值時(shí)區(qū)間的問(wèn)題。一律為閉區(qū)間。使用列索引名稱,而非列索引位置。主要用來(lái)保證代碼可讀性。使用列索引位置時(shí),需要注解。同樣保證代碼可讀性。除此之外ix方法還有一個(gè)缺點(diǎn),就是在面對(duì)數(shù)據(jù)量巨大的任務(wù)的時(shí)候,其效率會(huì)低于loc和iloc方法,所以在日常的數(shù)據(jù)分析工作中建議使用loc和iloc方法來(lái)執(zhí)行切片操作。查改增刪DataFrame數(shù)據(jù)1.查看訪問(wèn)DataFrame中的數(shù)據(jù)——切片方法之ix更改DataFrame中的數(shù)據(jù),原理是將這部分?jǐn)?shù)據(jù)提取出來(lái),重新賦值為新的數(shù)據(jù)。需要注意的是,數(shù)據(jù)更改直接針對(duì)DataFrame原數(shù)據(jù)更改,操作無(wú)法撤銷,如果做出更改,需要對(duì)更改條件做確認(rèn)或?qū)?shù)據(jù)進(jìn)行備份。查改增刪DataFrame數(shù)據(jù)2.更新修改DataFrame中的數(shù)據(jù)DataFrame添加一列的方法非常簡(jiǎn)單,只需要新建一個(gè)列索引。并對(duì)該索引下的數(shù)據(jù)進(jìn)行賦值操作即可。新增的一列值是相同的則直接賦值一個(gè)常量即可。查改增刪DataFrame數(shù)據(jù)3.為DataFrame增添數(shù)據(jù)刪除某列或某行數(shù)據(jù)需要用到pandas提供的方法drop,drop方法的用法如下。axis為0時(shí)表示刪除行,axis為1時(shí)表示刪除列。

drop(labels,axis=0,level=None,inplace=False,errors='raise')常用參數(shù)如下所示。查改增刪DataFrame數(shù)據(jù)4.刪除某列或某行數(shù)據(jù)參數(shù)名稱說(shuō)明labels接收string或array。代表刪除的行或列的標(biāo)簽。無(wú)默認(rèn)。axis接收0或1。代表操作的軸向。默認(rèn)為0。levels接收int或者索引名。代表標(biāo)簽所在級(jí)別。默認(rèn)為None。inplace接收boolean。代表操作是否對(duì)原數(shù)據(jù)生效。默認(rèn)為False。數(shù)值型數(shù)據(jù)的描述性統(tǒng)計(jì)主要包括了計(jì)算數(shù)值型數(shù)據(jù)的完整情況、最小值、均值、中位數(shù)、最大值、四分位數(shù)、極差、標(biāo)準(zhǔn)差、方差、協(xié)方差和變異系數(shù)等。在NumPy庫(kù)中一些常用的統(tǒng)計(jì)學(xué)函數(shù)如下表所示。pandas庫(kù)基于NumPy,自然也可以用這些函數(shù)對(duì)數(shù)據(jù)框進(jìn)行描述性統(tǒng)計(jì)。描述分析DataFrame數(shù)據(jù)1.數(shù)值型特征的描述性統(tǒng)計(jì)——NumPy中的描述性統(tǒng)計(jì)函數(shù)函數(shù)名稱說(shuō)明函數(shù)名稱說(shuō)明np.min最小值np.max最大值np.mean均值np.ptp極差np.median中位數(shù)np.std標(biāo)準(zhǔn)差np.var方差np.cov協(xié)方差pandas還提供了更加便利的方法來(lái)計(jì)算均值,如detail['amounts'].mean()。pandas還提供了一個(gè)方法叫作describe,能夠一次性得出數(shù)據(jù)框所有數(shù)值型特征的非空值數(shù)目、均值、四分位數(shù)、標(biāo)準(zhǔn)差。描述分析DataFrame數(shù)據(jù)1.數(shù)值型特征的描述性統(tǒng)計(jì)——pandas描述性統(tǒng)計(jì)方法方法名稱說(shuō)明方法名稱說(shuō)明min最小值max最大值mean均值ptp極差median中位數(shù)std標(biāo)準(zhǔn)差var方差cov協(xié)方差sem標(biāo)準(zhǔn)誤差mode眾數(shù)skew樣本偏度kurt樣本峰度quantile四分位數(shù)count非空值數(shù)目describe描述統(tǒng)計(jì)mad平均絕對(duì)離差描述類別型特征的分布狀況,可以使用頻數(shù)統(tǒng)計(jì)表。pandas庫(kù)中實(shí)現(xiàn)頻數(shù)統(tǒng)計(jì)的方法為value_counts。pandas提供了categories類,可以使用astype方法將目標(biāo)特征的數(shù)據(jù)類型轉(zhuǎn)換為category類別。describe方法除了支持傳統(tǒng)數(shù)值型以外,還能夠支持對(duì)category類型的數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì),四個(gè)統(tǒng)計(jì)量分別為列非空元素的數(shù)目,類別的數(shù)目,數(shù)目最多的類別,數(shù)目最多類別的數(shù)目。描述分析DataFrame數(shù)據(jù)2.類別型特征的描述性統(tǒng)計(jì)1掌握DataFrame的常用操作目錄讀寫不同數(shù)據(jù)源的數(shù)據(jù)2轉(zhuǎn)換與處理時(shí)間序列數(shù)據(jù)3在多數(shù)情況下,對(duì)時(shí)間類型數(shù)據(jù)進(jìn)行分析的前提就是將原本為字符串的時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間類型。pandas繼承了NumPy庫(kù)和datetime庫(kù)的時(shí)間相關(guān)模塊,提供了6種時(shí)間相關(guān)的類。轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間pandas時(shí)間相關(guān)的類類名稱說(shuō)明Timestamp最基礎(chǔ)的時(shí)間類。表示某個(gè)時(shí)間點(diǎn)。在絕大多數(shù)的場(chǎng)景中的時(shí)間數(shù)據(jù)都是Timestamp形式的時(shí)間。Period表示單個(gè)時(shí)間跨度,或者某個(gè)時(shí)間段,例如某一天,某一小時(shí)等。Timedelta表示不同單位的時(shí)間,例如1天,1.5小時(shí),3分鐘,4秒等,而非具體的某個(gè)時(shí)間段。DatetimeIndex一組Timestamp構(gòu)成的Index,可以用來(lái)作為Series或者DataFrame的索引。PeriodtimeIndex一組Period構(gòu)成的Index,可以用來(lái)作為Series或者DataFrame的索引。TimedeltaIndex一組Timedelta構(gòu)成的Index,可以用來(lái)作為Series或者DataFrame的索引。其中Timestamp作為時(shí)間類中最基礎(chǔ)的,也是最為常用的。在多數(shù)情況下,時(shí)間相關(guān)的字符串都會(huì)轉(zhuǎn)換成為Timestamp。pandas提供了to_datetime函數(shù),能夠?qū)崿F(xiàn)這一目標(biāo)。值得注意的是,Timestamp類型時(shí)間是有限制的。轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間Timestamp類型除了將數(shù)據(jù)字原始DataFrame中直接轉(zhuǎn)換為Timestamp格式外,還可以將數(shù)據(jù)單獨(dú)提取出來(lái)將其轉(zhuǎn)換為DatetimeIndex或者PeriodIndex。轉(zhuǎn)換為PeriodIndex的時(shí)候需要注意,需要通過(guò)freq參數(shù)指定時(shí)間間隔,常用的時(shí)間間隔有Y為年,M為月,D為日,H為小時(shí),T為分鐘,S為秒。兩個(gè)函數(shù)可以用來(lái)轉(zhuǎn)換數(shù)據(jù)還可以用來(lái)創(chuàng)建時(shí)間序列數(shù)據(jù),其參數(shù)非常類似。轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間DatetimeIndex與PeriodIndex函數(shù)DatetimeIndex和PeriodIndex兩者區(qū)別在日常使用的過(guò)程中相對(duì)較小,其中DatetimeIndex是用來(lái)指代一系列時(shí)間點(diǎn)的一種數(shù)據(jù)結(jié)構(gòu),而PeriodIndex則是用來(lái)指代一系列時(shí)間段的數(shù)據(jù)結(jié)構(gòu)。轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間DatetimeIndex與PeriodIndex函數(shù)及其參數(shù)說(shuō)明參數(shù)名稱說(shuō)明data接收array。表示DatetimeIndex的值。無(wú)默認(rèn)。freq接收string。表示時(shí)間的間隔頻率。無(wú)默認(rèn)。start接收string。表示生成規(guī)則時(shí)間數(shù)據(jù)的起始點(diǎn)。無(wú)默認(rèn)。periods表示需要生成的周期數(shù)目。無(wú)默認(rèn)。end接收string。表示生成規(guī)則時(shí)間數(shù)據(jù)的終結(jié)點(diǎn)。無(wú)默認(rèn)。tz接收timezone。表示數(shù)據(jù)的時(shí)區(qū)。默認(rèn)為None。name接收int,string。默認(rèn)為空。指定DatetimeIndex的名字。在多數(shù)涉及時(shí)間相關(guān)的數(shù)據(jù)處理,統(tǒng)計(jì)分析的過(guò)程中,需要提取時(shí)間中的年份,月份等數(shù)據(jù)。使用對(duì)應(yīng)的Timestamp類屬性就能夠?qū)崿F(xiàn)這一目的。結(jié)合Python列表推導(dǎo)式,可以實(shí)現(xiàn)對(duì)DataFrame某一列時(shí)間信息數(shù)據(jù)的提取。提取時(shí)間序列數(shù)據(jù)信息Timestamp類常用屬性屬性名稱說(shuō)明屬性名稱說(shuō)明year年week一年中第幾周month月quarter季節(jié)day日weekofyear一年中第幾周hour小時(shí)dayofyear一年中的第幾天minute分鐘dayofweek一周第幾天second秒weekday一周第幾天date日期weekday_name星期名稱time時(shí)間is_leap_year是否閏年提取時(shí)間序列數(shù)據(jù)信息在DatetimeIndex和PeriodIndex中提取信息在DatetimeIndex和PeriodIndex中提取對(duì)應(yīng)信息可以以類屬性方式實(shí)現(xiàn)。值得注意的是PeriodIndex相比于DatetimeIndex少了weekday_name屬性,所以不能夠用該屬性提取星期名稱數(shù)據(jù)。若想要提取信息名稱可以通過(guò)提取weekday屬性,而后將0-6四個(gè)標(biāo)簽分別賦值為Monday至Sunday。Timedelta是時(shí)間相關(guān)的類中的一個(gè)異類,不僅能夠使用正數(shù),還能夠使用負(fù)數(shù)表示單位時(shí)間,例如1秒,2分鐘,3小時(shí)等。使用Timedelta類,配合常規(guī)的時(shí)間相關(guān)類能夠輕松實(shí)現(xiàn)時(shí)間的算術(shù)運(yùn)算。目前Timedelta函數(shù)中時(shí)間周期中沒(méi)有年和月。所有周期名稱,對(duì)應(yīng)單位及其說(shuō)明如下表所示。加減時(shí)間數(shù)據(jù)Timedelta類周期名稱單位說(shuō)明周期名稱單位說(shuō)明weeks無(wú)星期secondss秒daysD天millisecondsms毫秒hoursh小時(shí)microsecondsus微妙minutesm分nanosecondsns納秒使用Timedelta

,可以很輕松地實(shí)現(xiàn)在某個(gè)時(shí)間上加減一段時(shí)間。除了使用Timedelta實(shí)現(xiàn)時(shí)間的平移外,還能夠直接對(duì)兩個(gè)時(shí)間序列進(jìn)行相減,從而得出一個(gè)Timedelta。加減時(shí)間數(shù)據(jù)Timedelta類pandas統(tǒng)計(jì)分析基礎(chǔ)1創(chuàng)建透視表與交叉表目錄使用分組聚合進(jìn)行組內(nèi)計(jì)算2小結(jié)3該方法提供的是分組聚合步驟中的拆分功能,能根據(jù)索引或字段對(duì)數(shù)據(jù)進(jìn)行分組。其常用參數(shù)與使用格式如下。

DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)使用groupby方法拆分?jǐn)?shù)據(jù)groupby方法的參數(shù)及其說(shuō)明參數(shù)名稱說(shuō)明by接收l(shuí)ist,string,mapping或generator。用于確定進(jìn)行分組的依據(jù)。無(wú)默認(rèn)。axis接收int。表示操作的軸向,默認(rèn)對(duì)列進(jìn)行操作。默認(rèn)為0。level接收int或者索引名。代表標(biāo)簽所在級(jí)別。默認(rèn)為None。as_index接收boolearn。表示聚合后的聚合標(biāo)簽是否以DataFrame索引形式輸出。默認(rèn)為True。sort接收boolearn。表示是否對(duì)分組依據(jù)分組標(biāo)簽進(jìn)行排序。默認(rèn)為True。group_keys接收boolearn。表示是否顯示分組標(biāo)簽的名稱。默認(rèn)為True。squeeze接收boolearn。表示是否在允許的情況下對(duì)返回?cái)?shù)據(jù)進(jìn)行降維。默認(rèn)為False。如果傳入的是一個(gè)函數(shù)則對(duì)索引進(jìn)行計(jì)算并分組。如果傳入的是一個(gè)字典或者Series則字典或者Series的值用來(lái)做分組依據(jù)。如果傳入一個(gè)NumPy數(shù)組則數(shù)據(jù)的元素作為分組依據(jù)。如果傳入的是字符串或者字符串列表則使用這些字符串所代表的字段作為分組依據(jù)。使用groupby方法拆分?jǐn)?shù)據(jù)groupby方法的參數(shù)及其說(shuō)明——by參數(shù)的特別說(shuō)明用groupby方法分組后的結(jié)果并不能直接查看,而是被存在內(nèi)存中,輸出的是內(nèi)存地址。實(shí)際上分組后的數(shù)據(jù)對(duì)象GroupBy類似Series與DataFrame,是pandas提供的一種對(duì)象。GroupBy對(duì)象常用的描述性統(tǒng)計(jì)方法如下。使用groupby方法拆分?jǐn)?shù)據(jù)GroupBy對(duì)象常用的描述性統(tǒng)計(jì)方法方法名稱說(shuō)明方法名稱說(shuō)明count計(jì)算分組的數(shù)目,包括缺失值。cumcount對(duì)每個(gè)分組中組員的進(jìn)行標(biāo)記,0至n-1。head返回每組的前n個(gè)值。size返回每組的大小。max返回每組最大值。min返回每組最小值。mean返回每組的均值。std返回每組的標(biāo)準(zhǔn)差。median返回每組的中位數(shù)。sum返回每組的和。agg,aggregate方法都支持對(duì)每個(gè)分組應(yīng)用某函數(shù),包括Python內(nèi)置函數(shù)或自定義函數(shù)。同時(shí)這兩個(gè)方法能夠也能夠直接對(duì)DataFrame進(jìn)行函數(shù)應(yīng)用操作。在正常使用過(guò)程中,agg函數(shù)和aggregate函數(shù)對(duì)DataFrame對(duì)象操作時(shí)功能幾乎完全相同,因此只需要掌握其中一個(gè)函數(shù)即可。它們的參數(shù)說(shuō)明如下表。

DataFrame.agg(func,axis=0,*args,**kwargs)

DataFrame.aggregate(func,axis=0,*args,**kwargs)使用agg方法聚合數(shù)據(jù)agg和aggregate函數(shù)參數(shù)及其說(shuō)明參數(shù)名稱說(shuō)明func接收l(shuí)ist、dict、function。表示應(yīng)用于每行/每列的函數(shù)。無(wú)默認(rèn)。axis接收0或1。代表操作的軸向。默認(rèn)為0??梢允褂胊gg方法一次求出當(dāng)前數(shù)據(jù)中所有菜品銷量和售價(jià)的總和與均值,如detail[['counts','amounts']].agg([np.sum,np.mean]))。對(duì)于某個(gè)字段希望只做求均值操作,而對(duì)另一個(gè)字段則希望只做求和操作,可以使用字典的方式,將兩個(gè)字段名分別作為key,然后將NumPy庫(kù)的求和與求均值的函數(shù)分別作為value,如detail.agg({'counts':np.sum,'amounts':np.mean}))。在某些時(shí)候還希望求出某個(gè)字段的多個(gè)統(tǒng)計(jì)量,某些字段則只需要求一個(gè)統(tǒng)計(jì)量,此時(shí)只需要將字典對(duì)應(yīng)key的value變?yōu)榱斜?,列表元素為多個(gè)目標(biāo)的統(tǒng)計(jì)量即可,如detail.agg({'counts':np.sum,'amounts':[np.mean,np.sum]}))使用agg方法聚合數(shù)據(jù)agg方法求統(tǒng)計(jì)量在agg方法可傳入讀者自定義的函數(shù)。使用自定義函數(shù)需要注意的是NumPy庫(kù)中的函數(shù)np.mean,np.median,d,np.sum,np.std,np.var能夠在agg中直接使用,但是在自定義函數(shù)中使用NumPy庫(kù)中的這些函數(shù),如果計(jì)算的時(shí)候是單個(gè)序列則會(huì)無(wú)法得出想要的結(jié)果,如果是多列數(shù)據(jù)同時(shí)計(jì)算則不會(huì)出現(xiàn)這種問(wèn)題。使用agg方法能夠?qū)崿F(xiàn)對(duì)每一個(gè)字段每一組使用相同的函數(shù)。如果需要對(duì)不同的字段應(yīng)用不同的函數(shù),則可以和Dataframe中使用agg方法相同。使用agg方法聚合數(shù)據(jù)agg方法與自定義的函數(shù)apply方法類似agg方法能夠?qū)⒑瘮?shù)應(yīng)用于每一列。不同之處在于apply方法相比agg方法傳入的函數(shù)只能夠作用于整個(gè)DataFrame或者Series,而無(wú)法像agg一樣能夠?qū)Σ煌侄?,?yīng)用不同函數(shù)獲取不同結(jié)果。使用apply方法對(duì)GroupBy對(duì)象進(jìn)行聚合操作其方法和agg方法也相同,只是使用agg方法能夠?qū)崿F(xiàn)對(duì)不同的字段進(jìn)行應(yīng)用不同的函數(shù),而apply則不行。DataFrame.apply(func,axis=0,broadcast=False,raw=False,reduce=None,args=(),**kwds)使用apply方法聚合數(shù)據(jù)參數(shù)名稱說(shuō)明func接收f(shuō)unctions。表示應(yīng)用于每行/列的函數(shù)。無(wú)默認(rèn)。axis接收0或1。代表操作的軸向。默認(rèn)為0。broadcast接收boolearn。表示是否進(jìn)行廣播。默認(rèn)為False。raw接收boolearn。表示是否直接將ndarray對(duì)象傳遞給函數(shù)。默認(rèn)為False。reduce接收boolearn或者None。表示返回值的格式。默認(rèn)None。transform方法能夠?qū)φ麄€(gè)DataFrame的所有元素進(jìn)行操作。且transform方法只有一個(gè)參數(shù)“func”,表示對(duì)DataFrame操作的函數(shù)。同時(shí)transform方法還能夠?qū)ataFrame分組后的對(duì)象GroupBy進(jìn)行操作,可以實(shí)現(xiàn)組內(nèi)離

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論