版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Pandas常用操作實(shí)驗(yàn)九課程學(xué)習(xí)目標(biāo)掌握Pandas的兩個(gè)核心數(shù)據(jù)結(jié)構(gòu)掌握Pandas常用數(shù)據(jù)處理方法了解數(shù)據(jù)可視化Pandas數(shù)據(jù)導(dǎo)入Pandas支持非常豐富的文件類型,它可以讀取和保存多種類型的數(shù)據(jù)。導(dǎo)入Excel數(shù)據(jù)Excel數(shù)據(jù)常常導(dǎo)入的是.xls或.xlsx文件。pd.read_excel(io,sheet_name,header)io:表示.xls或.xlsx的文件路徑或類文件對(duì)象,必須是文件的真實(shí)路徑;sheet_name:表示工作表;header:默認(rèn)值為0,取第一行的值為列名,數(shù)據(jù)為除列名以外的數(shù)據(jù),如果數(shù)據(jù)不包含列名,則設(shè)置header=None。Pandas數(shù)據(jù)導(dǎo)入例9.1導(dǎo)入Excel數(shù)據(jù)。importpandasaspd#導(dǎo)入Excel數(shù)據(jù)data=pd.read_excel(r"C:\Users\JOLY\Desktop\test.xlsx",sheet_name=0,header=0)print(data)導(dǎo)入Excel數(shù)據(jù)Pandas數(shù)據(jù)導(dǎo)入filepath_or_buffer:字符串、文件路徑,也可以是URL鏈接;sep:每行數(shù)據(jù)內(nèi)容的分隔符號(hào),CSV中常用’,’分隔;header:指定作為列名的行,默認(rèn)值為0,即取第一行的值為列名。數(shù)據(jù)為除列名以外的數(shù)據(jù),若數(shù)據(jù)不包含列表,則設(shè)置header=None;names:用來(lái)指定列的名稱,類似于列表的序列,不允許有重復(fù)值;usecols:用來(lái)獲取指定列名的數(shù)據(jù);skip_blank_lines:跳過(guò)指定行數(shù);nrows:用于指定需要讀取的行數(shù),常用于較大的數(shù)據(jù);encoding:字符串,默認(rèn)值為None,文件的編碼格式。導(dǎo)入CSV文件pd.read_csv(filepath_or_buffer,sep=,header,encoding=None)除了Excel文件,CSV文件是Pandas另一種重要文件形式,CSV可用記事本打開(kāi)。Pandas數(shù)據(jù)導(dǎo)入例9.2使用read_csv()函數(shù)導(dǎo)入CSV文件。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式print(df)導(dǎo)入CSV文件Pandas數(shù)據(jù)導(dǎo)入io:字符串、文件路徑,也可以是URL鏈接,網(wǎng)址不接受https;match:正則表達(dá)式;flavor:解釋器,默認(rèn)為’lxml’;header:指定列標(biāo)題所在的行;encoding:文件的編碼格式。注意:導(dǎo)入HTML網(wǎng)頁(yè)數(shù)據(jù)時(shí)只能導(dǎo)入table標(biāo)簽的數(shù)據(jù)。導(dǎo)入HTML網(wǎng)頁(yè)pd.read_html(io,match='.+',flavor,header,encoding)Pandas數(shù)據(jù)導(dǎo)入例9.3使用read_html()函數(shù)導(dǎo)入HTML網(wǎng)頁(yè)。importpandasaspdurl=
'/nba/salaries'#pd.read_html返回的是一個(gè)DataFrame的列表,我們選擇其中一個(gè)DataFramedf_list=pd.read_html(url,header=0)#如果有多個(gè)DataFrame,可以選擇其中一個(gè),或者合并多個(gè)DataFramedf=df_list[0]print(df)#將數(shù)據(jù)保存到CSV文件,確保文件名合法df.to_csv('nba_player_salaries.csv',index=False)導(dǎo)入HTML網(wǎng)頁(yè)P(yáng)andas數(shù)據(jù)操作通過(guò)上面內(nèi)容,可知一個(gè)DataFrame結(jié)構(gòu)大致由三部分組成,分別是列名稱、索引和數(shù)據(jù)。接下來(lái)學(xué)習(xí)針對(duì)DataFrame的基本操作,這里不會(huì)刻意強(qiáng)調(diào)Series,因?yàn)榍懊嬖贒ataFrame上學(xué)習(xí)的大多數(shù)方法和技巧都適用于對(duì)Series進(jìn)行處理,在例9.3中已經(jīng)讀取了一個(gè)外部數(shù)據(jù),這是洛杉磯的人口普查數(shù)據(jù)。有些時(shí)候,讀取的文件很大。如果全部輸出預(yù)覽這些文件,既不美觀,又很耗時(shí)。Pandas提供了head()和tail()方法,它可以幫助用戶只預(yù)覽一小塊數(shù)據(jù)。Pandas數(shù)據(jù)操作例9.4使用df.head()函數(shù)預(yù)覽前五條數(shù)據(jù)。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式print(df.head())使用df.head()函數(shù)df.head()函數(shù)會(huì)默認(rèn)顯示前五條數(shù)據(jù)。Pandas數(shù)據(jù)操作例9.5使用df.tail()函數(shù)顯示后5條數(shù)據(jù)。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式print(df.tail(5))使用df.tail()函數(shù)df.tail(n)函數(shù)指定顯示后n條數(shù)據(jù)。Pandas數(shù)據(jù)操作例9.6使用describe()函數(shù)預(yù)覽數(shù)據(jù)集。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式print(df.describe())使用describe()函數(shù)Pandas還提供統(tǒng)計(jì)和描述性方法,方便用戶從宏觀的角度去了解數(shù)據(jù)集。describe()相當(dāng)于對(duì)數(shù)據(jù)集進(jìn)行概覽,會(huì)輸出該數(shù)據(jù)集每一列數(shù)據(jù)的計(jì)數(shù)、最大值、最小值等。Pandas常用數(shù)據(jù)處理方法在數(shù)據(jù)預(yù)處理過(guò)程中往往會(huì)對(duì)數(shù)據(jù)集進(jìn)行切分,只將需要的某些行、列,或者數(shù)據(jù)塊保留下來(lái),輸出到下一個(gè)流程中去。這也就是所謂的數(shù)據(jù)選擇,或者數(shù)據(jù)索引。由于Pandas的數(shù)據(jù)結(jié)構(gòu)中存在索引、標(biāo)簽,所以可以通過(guò)多軸索引完成對(duì)數(shù)據(jù)的選擇。數(shù)據(jù)選擇基于索引選擇(iloc方法)例9.7打印輸出CSV文件中的前三行數(shù)據(jù)。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式print(df.iloc[:3])當(dāng)新建一個(gè)DataFrame之后,如果未自己指定行索引或者列對(duì)應(yīng)的標(biāo)簽,那么Pandas會(huì)默認(rèn)從0開(kāi)始以數(shù)字的形式作為行索引,并以數(shù)據(jù)集的第一行作為列對(duì)應(yīng)的標(biāo)簽。其實(shí),這里的列也有數(shù)字索引,默認(rèn)也是從0開(kāi)始,只是未顯示出來(lái)。首先可以基于數(shù)字索引對(duì)數(shù)據(jù)集進(jìn)行選擇,這里使用Pandas中的df.iloc方法,這種方法可接受的類型為整數(shù)、整數(shù)構(gòu)成的列表、布爾數(shù)組、可返回索引值的參數(shù)或索引。同樣以上面的洛杉磯的人口普查數(shù)據(jù)為例,這里選擇前三行的數(shù)據(jù)。基于標(biāo)簽名選擇(loc方法)例9.8打印輸出CSV文件中的前三列數(shù)據(jù)。importpandasaspd#從CSV文件讀取數(shù)據(jù)到DataFramedf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#打印指定列的數(shù)據(jù)
#使用.loc選擇所有行和指定的列名print(df.loc[:,[‘ZipCode’,’TotalPolulation’,’MedianAge’]])除了上述方法,也可以根據(jù)標(biāo)簽對(duì)應(yīng)的名稱進(jìn)行選擇,用到的方法為df.loc,其可以接受的類型為單個(gè)標(biāo)簽、列表或數(shù)組包含的標(biāo)簽、切片對(duì)象、布爾數(shù)組和可返回標(biāo)簽的函數(shù)和參數(shù)。同樣以上面的洛杉磯的人口普查數(shù)據(jù)為例,選擇前三列的數(shù)據(jù)。Pandas常用數(shù)據(jù)處理方法雖然可以通過(guò)數(shù)據(jù)選擇方法從一個(gè)完整的數(shù)據(jù)集中拿到需要的數(shù)據(jù),但有的時(shí)候直接刪除不需要的數(shù)據(jù)更加簡(jiǎn)單直接。在Pandas中,以.drop開(kāi)頭的方法都與數(shù)據(jù)刪減有關(guān)。DataFrame.drop可以直接去掉數(shù)據(jù)集中指定的列和行。一般在使用時(shí)指定labels標(biāo)簽參數(shù),然后再通過(guò)axis指定按行(axis=1)或按列(axis=0)刪除即可。當(dāng)然,也可以通過(guò)索引參數(shù)刪除數(shù)據(jù),具體查看官方文檔。數(shù)據(jù)刪減Pandas常用數(shù)據(jù)處理方法例9.9刪除CSV文件中的兩列。importpandasaspddf=pd.read_csv(r"C:\Users\JOLY\Desktop\los_census.csv",sep=',',encoding='utf-8')pd.set_option('display.unicode.east_asian_width',True)#規(guī)則格式#刪除指定的列
#使用drop()方法刪除列,labels參數(shù)指定要?jiǎng)h除的列名
#axis=1表示按行操作,刪除列'Procedure'和'TotalMales'#返回一個(gè)新的DataFrame,其中不包含這些列print(df.drop(labels=['MedianAge',
'TotalMales'],axis=1))DataFrame.drop_duplicates則通常用于數(shù)據(jù)去重,即剔除數(shù)據(jù)集中的重復(fù)值。使用方法非常簡(jiǎn)單,默認(rèn)情況下,它會(huì)根據(jù)所有列刪除重復(fù)的行。也可以使用subset指定要?jiǎng)h除的特定列上的重復(fù)項(xiàng),要?jiǎng)h除重復(fù)項(xiàng)并保留最后一次出現(xiàn),請(qǐng)使用keep='last'。除此之外,另一個(gè)用于數(shù)據(jù)刪減的方法DataFrame.dropna也十分常用,其主要的用途是刪除缺少值,即數(shù)據(jù)集中空缺的數(shù)據(jù)列或行。數(shù)據(jù)刪減Pandas常用數(shù)據(jù)處理方法既然提到了數(shù)據(jù)刪減,反之則可能會(huì)遇到數(shù)據(jù)填充的情況。而對(duì)于一個(gè)給定的數(shù)據(jù)集而言,一般不會(huì)亂填數(shù)據(jù),而更多的是對(duì)缺失值進(jìn)行填充。在真實(shí)的生產(chǎn)環(huán)境中,需要處理的數(shù)據(jù)文件往往沒(méi)有想象中的那么美好。其中,很大幾率會(huì)遇到的情況就是缺失值。缺失值主要是指數(shù)據(jù)丟失的現(xiàn)象,也就是數(shù)據(jù)集中的某一塊數(shù)據(jù)不存在。除此之外、存在但明顯不正確的數(shù)據(jù)也被歸為缺失值一類。例如,在一個(gè)時(shí)間序列數(shù)據(jù)集中,某一段數(shù)據(jù)突然發(fā)生了時(shí)間流錯(cuò)亂,那么這一小塊數(shù)據(jù)就是毫無(wú)意義的,可以被歸為缺失值。在Pandas中,為了更方便地檢測(cè)缺失值,將不同類型數(shù)據(jù)的缺失均采用NaN(NotaNumber)標(biāo)記,在時(shí)間序列中,時(shí)間戳丟失采用NaT(NotaTime)標(biāo)記。在Pandas中,檢測(cè)缺失值時(shí)主要用2個(gè)方法——isna()和notna(),返回值為布爾值,用于判斷是否為缺失值。數(shù)據(jù)填充Pandas常用數(shù)據(jù)處理方法例9.10生成一個(gè)九行五列的二維數(shù)組,其中元素均為[0,1)區(qū)間中均勻分布的隨機(jī)數(shù),設(shè)置缺失值。importpandasaspd#隨機(jī)生成九行五列的二維數(shù)組,列名為ABCDEdf=pd.DataFrame(np.random.rand(9,
5),columns=list('ABCDE'))#插入T列,并打上時(shí)間戳df.insert(value=pd.Timestamp('2023-11-20'),loc=0,column='Time')#將1,3,5列的2,4,6,8行置為缺失值df.iloc[[1,
3,
5,
7],
[0,
2,
4]]
=np.nan#將2,4,6列的3,5,7,9行置為缺失值df.iloc[[2,
4,
6,
8],
[1,
3,
5]]
=np.nanprint(df)數(shù)據(jù)填充Pandas常用數(shù)據(jù)處理方法例9.11通過(guò)isna()方法確定數(shù)據(jù)集中的缺失值。importpandasaspd#隨機(jī)生成九行五列的二維數(shù)組,列名為ABCDEdf=pd.DataFrame(np.random.rand(9,
5),columns=list('ABCDE'))#插入T列,并打上時(shí)間戳df.insert(value=pd.Timestamp('2023-11-20'),loc=0,column='Time')#將1,3,5列的2,4,6,8行置為缺失值df.iloc[[1,
3,
5,
7],
[0,
2,
4]]
=np.nan#將2,4,6列的3,5,7,9行置為缺失值df.iloc[[2,
4,
6,
8],
[1,
3,
5]]
=np.nanprint(df.isna())數(shù)據(jù)填充面對(duì)缺失值時(shí),一般只有2種方法,即刪除和填充,2種方法都比較極端,所以要根據(jù)實(shí)際需求來(lái)選擇。下面來(lái)了解一下填充缺失值的方法fillna()。Pandas常用數(shù)據(jù)處理方法例9.12對(duì)A~E列用平均值進(jìn)行填充。數(shù)據(jù)填充首先,需要先填充缺失值,第一種方法是用一個(gè)值來(lái)代替NaN,這里用0來(lái)代替,即df.fillna(0);另外也可以通過(guò)參數(shù)將缺失值前或后的值填充給相應(yīng)的缺失值,即df.fillna(method=’pad’)和df.fillna(method=’bfill’);除了上述方法也可以用Pandas自帶的求平均值方法填充特定的行或列,即df.fillna(df.mean()[列(行)n:列(行)m])。importpandasaspd#隨機(jī)生成九行五列的二維數(shù)組,列名為ABCDEdf=pd.DataFrame(np.random.rand(9,
5),columns=list('ABCDE'))#插入T列,并打上時(shí)間戳df.insert(value=pd.Timestamp('2023-11-20'),loc=0,column='Time')#將1,3,5列的2,4,6,8行置為缺失值df.iloc[[1,
3,
5,
7],
[0,
2,
4]]
=np.nan#將2,4,6列的3,5,7,9行置為缺失值df.iloc[[2,
4,
6,
8],
[1,
3,
5]]
=np.nandf2=df.fillna(df.mean()['A':'E'])print(df2)觀察發(fā)現(xiàn),A到E列的缺失值都被平均值填充。Pandas常用數(shù)據(jù)處理方法數(shù)據(jù)填充可以采取插值填充,插值是數(shù)值分析中一種方法。簡(jiǎn)而言之,就是借助于一個(gè)函數(shù)(線性或非線性),再根據(jù)已知數(shù)據(jù)去求解未知數(shù)據(jù)的值。插值在數(shù)據(jù)領(lǐng)域非常常見(jiàn),它的好處在于,可以盡量去還原數(shù)據(jù)本身的樣子。可以通過(guò)interpolate()方法完成線性插值。例9.13隨機(jī)生成一個(gè)DataFrame并設(shè)置缺失值。importpandasaspd#生成一個(gè)DataFrame#使用pd.DataFrame()創(chuàng)建一個(gè)新的DataFrame#其中包含兩個(gè)列'A'和'B',每列包含一些數(shù)據(jù)
#'A'列的數(shù)據(jù)有一個(gè)NaN值(缺失值)
#'B'列的數(shù)據(jù)有兩個(gè)NaN值(缺失值)df=pd.DataFrame({'A':
[1.1,
2.2,np.nan,
4.5,
5.7,
6.9],
'B':
[0.21,np.nan,np.nan,
3.1,
11.7,
13.2]})print(df)觀察這些元素,如果通過(guò)前面所說(shuō)的前后值填充或平均值填充的方法進(jìn)行填充不太能反應(yīng)出來(lái)其趨勢(shì),這時(shí)使用插值填充是最優(yōu)的方法。Pandas常用數(shù)據(jù)處理方法例9.14使用默認(rèn)的線性插值。importpandasaspd#生成一個(gè)DataFrame#其中包含兩個(gè)列'A'和'B',每列包含一些數(shù)據(jù)
#'A'列的數(shù)據(jù)有一個(gè)NaN值(缺失值)
#'B'列的數(shù)據(jù)有兩個(gè)NaN值(缺失值)df=pd.DataFrame({'A':
[1.1,
2.2,np.nan,
4.5,
5.7,
6.9],
'B':
[0.21,np.nan,np.nan,
3.1,
11.7,
13.2]})#使用插值法填充缺失值
#使用erpolate()方法來(lái)進(jìn)行線性插值
#該方法會(huì)基于現(xiàn)有數(shù)據(jù)的值對(duì)缺失值進(jìn)行插值填充
#線性插值默認(rèn)是在每列的數(shù)值之間進(jìn)行,適用于有序數(shù)據(jù)df_interpolate=df.interpolate()print(df_interpolate)數(shù)據(jù)填充Pandas常用數(shù)據(jù)處理方法NumPy,Pandas,Matplotlib構(gòu)成了一個(gè)完善的數(shù)據(jù)分析生態(tài)圈,所以3個(gè)工具的兼容性也非常好,甚至共享了大量的接口。當(dāng)數(shù)據(jù)是以DataFrame格式呈現(xiàn)時(shí),可以直接使用Pandas提供的DataFrame.plot方法調(diào)用Matplotlib接口繪制常見(jiàn)的圖形。數(shù)據(jù)可視化Pandas常用數(shù)據(jù)處理方法例9.15使用插值后的數(shù)據(jù)繪制線形圖。importpandasaspd#生成一個(gè)DataFrame#其中包含兩個(gè)列'A'和'B',每列包含一些數(shù)據(jù)
#'A'列的數(shù)據(jù)有一個(gè)NaN值(缺失值)
#'B'列的數(shù)據(jù)有兩個(gè)NaN值(缺失值)df=pd.DataFrame({'A':
[1.1,
2.2,np.nan,
4.5,
5.7,
6.9],
'B':
[0.21,np.nan,np.nan,
3.1,
11.7,
13.2]})#使用插值法填充缺失值
#使用erpolate()方法來(lái)進(jìn)行線性插值
#該方法會(huì)基于現(xiàn)有數(shù)據(jù)的值對(duì)缺失值進(jìn)行插值填充
#線性插值默認(rèn)是在每列的數(shù)值之間進(jìn)行,適用于有序數(shù)據(jù)df_interpolate=df.interpolate()#繪制插值填充后的DataFrame#使用df_interpolate.plot()繪制插值填充后的DataFrame的圖表
#默認(rèn)情況下,這將生成每列數(shù)據(jù)的線圖,展示了填充后的數(shù)據(jù)趨勢(shì)print(df_interpolate.plot())數(shù)據(jù)可視化Pandas常用數(shù)據(jù)處理方法例9.15通過(guò)改變參數(shù)kind的值選擇柱形圖來(lái)顯示。importpandasaspd#生成一個(gè)DataFrame#其中包含兩個(gè)列'A'和'B',每列包含一些數(shù)據(jù)
#'A'列的數(shù)據(jù)有一個(gè)NaN值(缺失值)
#'B'列的數(shù)據(jù)有兩個(gè)NaN值(缺失值)df=pd.DataFrame({'A':
[1.1,
2.2,np.nan,
4.5,
5.7,
6.9],
'B':
[0.21,np.nan,np.nan,
3.1,
11.7,
13.2]})#使用插值法填充缺失值
#使用erpolate()方法來(lái)進(jìn)行線性插值
#該方法會(huì)基于現(xiàn)有數(shù)據(jù)的值對(duì)缺失值進(jìn)行插值填充
#線性插值默認(rèn)是在每列的數(shù)值之間進(jìn)行,適用于有序數(shù)據(jù)df_interpolate=df.interpolate()#繪制插值填充后的DataFrame#使用df_interpolate.plot(kind='bar')繪制DataFrame的條形圖
#'kind='bar''參數(shù)指定圖表類型為條形圖(Barchart),適用于展示每列數(shù)據(jù)的值print(df_interpolate.plot(kind='bar'))數(shù)據(jù)可視化Pandas常用數(shù)據(jù)處理方法apply函數(shù)DataFrame.apply(self,func,axis=0,raw=False,result_type=None,args=(),**kwargs)Pandas的apply()方法是用來(lái)調(diào)用一個(gè)函數(shù)(Pythonmethod),讓此函數(shù)對(duì)數(shù)據(jù)對(duì)象進(jìn)行批量處理。Pandas的很多對(duì)象都可以使用apply()來(lái)調(diào)用函數(shù),如DataFrame,Series等。在使用apply()方法時(shí),通常放入一個(gè)lambda函數(shù)表達(dá)式或一個(gè)自定義函數(shù)作為操作運(yùn)算,官方給出的DataFrame的apply()用法為:Pandas常用數(shù)據(jù)處理方法func:函數(shù)或lambda表達(dá)式,應(yīng)用于每行或每列;axis:取值范圍為{0or“index”,1or“columns”},默認(rèn)為0;0表示函數(shù)處理的是每一列;1表示函數(shù)處理的是每一行;raw:bool類型,默認(rèn)為False;False表示把每一行或列作為Series傳入函數(shù)中;True表示接受的是ndarray數(shù)據(jù)類型;result_type:取值范圍為:{‘expand’,’reduce’,’broadcast’,None};expand表示列表式的結(jié)果將被轉(zhuǎn)化為列;reduce表示返回一個(gè)Series,而不是展開(kāi)類似列表的結(jié)果,這個(gè)與expand相反;broadcast表示結(jié)果將被廣播到DataFrame的原始形狀,原始索引和列將被保留;args:func的位置參數(shù);**kwargs:作為關(guān)鍵字參數(shù)傳遞給func的其他關(guān)鍵字參數(shù)。apply函數(shù)DataFrame.apply(self,func,axis=0,raw=False,result_type=None,args=(),**kwargs)Pandas常用數(shù)據(jù)處理方法例9.17創(chuàng)建一個(gè)數(shù)據(jù)框,包含三行兩列,每行的值為[4,9],列名分別為’A’,’B’。importpandasaspdimportnumpy
asnp#創(chuàng)建一個(gè)DataFrame#使用pd.DataFrame()創(chuàng)建一個(gè)新的DataFrame#數(shù)據(jù)來(lái)源是一個(gè)二維列表[[4,9]]*3,其中包含三行相同的數(shù)據(jù)[4,9]#列名為'A'和'B'#結(jié)果DataFrame的每一行都是[4,9]df=pd.DataFrame([[4,
9]]
*
3,columns=['A',
'B'])#此行輸出DataFrame,以顯示其數(shù)據(jù)和結(jié)構(gòu)dfapply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.18使用apply函數(shù)對(duì)數(shù)據(jù)框df的每個(gè)元素應(yīng)用平方根函數(shù)。importpandasaspdimportnumpy
asnpdf.apply(np.sqrt)apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.19使用聚合功能。importpandasaspdimportnumpy
asnp#對(duì)每一列應(yīng)用np.sum函數(shù),計(jì)算每列的和
#axis=0表示按列進(jìn)行操作
#np.sum計(jì)算每列的總和df.apply(np.sum,axis=0)#對(duì)每一列應(yīng)用np.sum函數(shù),計(jì)算每列的和
#axis=1表示按行進(jìn)行操作
#np.sum計(jì)算每列的總和df.apply(np.sum,axis=1)apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.20在每行上返回類似列表的內(nèi)容。importpandasaspdimportnumpy
asnp#對(duì)每一行應(yīng)用lambda函數(shù)
#lambdax:[1,2]是一個(gè)匿名函數(shù)(lambda函數(shù)),對(duì)每一行返回一個(gè)列表[1,2]#axis=1表示按行進(jìn)行操作
#結(jié)果是一個(gè)DataFrame,其中每一行都被替換為[1,2],形成一個(gè)新的DataFramedf.apply(lambdax:
[1,
2],axis=1)apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.21使用result_type=‘expand’將類似列表的結(jié)果擴(kuò)展到數(shù)據(jù)的列。importpandasaspdimportnumpy
asnp#對(duì)每一行應(yīng)用lambda函數(shù)
#lambdax:[1,2]是一個(gè)匿名函數(shù)(lambda函數(shù)),對(duì)每一行返回一個(gè)列表[1,2]#axis=1表示按行進(jìn)行操作
#result_type='expand'參數(shù)將結(jié)果展開(kāi)放入DataFrame的新列中
#結(jié)果是一個(gè)DataFrame,每一行都被替換為[1,2],并且'expand'參數(shù)使得每個(gè)列表元素都成為獨(dú)立的列df.apply(lambdax:
[1,
2],axis=1,result_type='expand')apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.22在函數(shù)中返回一個(gè)序列,生成的列名將是序列索引。importpandasaspdimportnumpy
asnp#對(duì)每一行應(yīng)用lambda函數(shù)
#lambdax:pd.Series([1,2],index=['foo','bar'])是一個(gè)匿名函數(shù)(lambda函數(shù))
#對(duì)每一行返回一個(gè)包含指定索引的pd.Series#axis=1表示按行進(jìn)行操作
#結(jié)果是一個(gè)DataFrame,其中每一行的處理結(jié)果將被展開(kāi)放入DataFrame的新列中,列名由pd.Series指定df.apply(lambdax:pd.Series([1,
2],index=['foo',
'bar']),axis=1)apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.23使用result_type=‘broadcast’確保函數(shù)返回相同的形狀結(jié)果,生成的列名是原始列名。importpandasaspdimportnumpy
asnp#對(duì)每一行應(yīng)用lambda函數(shù)
#lambdax:[1,2]是一個(gè)匿名函數(shù)(lambda函數(shù)),對(duì)每一行返回一個(gè)列表[1,2]#axis=1表示按行進(jìn)行操作
#result_type='broadcast'參數(shù)將結(jié)果廣播到原始DataFrame的形狀
#即每一行都將被替換為[1,2],且'broadcast'參數(shù)會(huì)將這個(gè)結(jié)果復(fù)制到原始DataFrame的每一行df.apply(lambdax:
[1,
2],axis=1,result_type='broadcast')apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.24Series使用apply函數(shù)。importpandasaspd
#創(chuàng)建一個(gè)帶有城市名稱作為索引的PandasSeries#數(shù)據(jù)為20,21,12,分別對(duì)應(yīng)'London'(倫敦)、'NewYork'(紐約)、'Helsinki'(赫爾辛基)
s=pd.Series([20,21,12],index=['London','NewYork','Helsinki’])
#輸出Series
print(s)apply函數(shù)Pandas常用數(shù)據(jù)處理方法例9.25定義函數(shù)并將其作為參數(shù)傳遞給apply,求值的平方。#定義一個(gè)函數(shù)square(x),用于計(jì)算輸入值的平方def
square(x):
returnx**
2#使用Series的apply方法將square函數(shù)應(yīng)用到Series的每個(gè)元素上
#apply(square)會(huì)對(duì)Series中的每一個(gè)元素調(diào)用square函數(shù)
#結(jié)果是一個(gè)新的Series,其中每個(gè)元素都是原始元素
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 博士生職業(yè)規(guī)劃
- 航空維修質(zhì)量管理與控制指南
- 旅游民宿業(yè)經(jīng)營(yíng)與服務(wù)規(guī)范
- 企業(yè)環(huán)境管理操作手冊(cè)
- 2026年口腔醫(yī)療管理公司員工宿舍管理制度
- 2026年劇本殺運(yùn)營(yíng)公司應(yīng)付賬款管理制度
- 2026年劇本殺運(yùn)營(yíng)公司數(shù)字化轉(zhuǎn)型管理制度
- 云計(jì)算技術(shù)概述
- 2025年金融科技領(lǐng)域人工智能客服系統(tǒng)開(kāi)發(fā)應(yīng)用前景分析
- 新型環(huán)保包裝機(jī)械研發(fā)項(xiàng)目2025年市場(chǎng)潛力可行性研究報(bào)告
- (2025年)司法考試法理學(xué)歷年真題及答案
- 2025年戰(zhàn)傷自救互救題庫(kù)及答案
- 2025年中小學(xué)教師正高級(jí)職稱評(píng)聘答辯試題(附答案)
- 介入導(dǎo)管室知識(shí)培訓(xùn)課件
- 非道路授權(quán)簽字人考試題及答案
- 2025年林教頭風(fēng)雪山神廟檢測(cè)試題(含答案)
- 體檢中心外科檢查
- 中緬邊境景頗克欽族:社會(huì)經(jīng)濟(jì)的歷史、現(xiàn)狀與發(fā)展路徑探究
- 深圳市鹽田區(qū)2025年數(shù)學(xué)六上期末綜合測(cè)試試題含解析
- DB5203∕T 38-2023 特色酒莊旅游服務(wù)等級(jí)劃分與評(píng)定
- 四川省成都市嘉祥外國(guó)語(yǔ)學(xué)校2024-2025學(xué)年七年級(jí)數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論