日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数

發(fā)布時(shí)間:2023/12/10 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在用pandas預(yù)處理數(shù)據(jù)時(shí),難免需要自己構(gòu)造一些有價(jià)值的數(shù)據(jù),applymap函數(shù)和map函數(shù)對(duì)于處理此類問題十分方便。

給定一個(gè)DataFrame,含有每個(gè)學(xué)生的第一次考試和第二次考試的成績(jī),現(xiàn)在讓你將分?jǐn)?shù)轉(zhuǎn)化成ABCD和 ‘ 不及格 ’ 等級(jí)。

首先來看DataFrame中的applymap函數(shù):數(shù)據(jù)參考自

grades_df = pd.DataFrame(data={'exam1': [43, 81, 78, 75, 89, 70, 91, 65, 98, 87],'exam2': [24, 63, 56, 56, 67, 51, 79, 46, 72, 60]},index=['Andre', 'Barry', 'Chris', 'Dan', 'Emilio', 'Fred', 'Greta', 'Humbert', 'Ivan', 'James'] )def convert_to_letter(score):if (score >= 90):return 'A'elif (score >= 80):return 'B'elif (score >= 70):return 'C'elif (score >= 60):return 'D'else:return '不及格'def convert_grades(grades):return grades.applymap(convert_to_letter)print (convert_grades(grades_df))輸出如下:exam1 exam2 Andre 不及格 不及格 Barry B D Chris C 不及格 Dan C 不及格 Emilio B D Fred C 不及格 Greta A C Humbert D 不及格 Ivan A C James B D

?

針對(duì)Series類型數(shù)據(jù)或者是DataFrame類型數(shù)據(jù)中的某一列,使用map函數(shù)而不是applymap函數(shù)

樣例1:

給定data數(shù)據(jù)集,讓你對(duì) ‘ 是否入黨 ’? 這一列,進(jìn)行維護(hù)。原數(shù)據(jù)集里面,是年份或空值(NaN),但是我們不關(guān)心年份的多少,我們只關(guān)心是否入黨,所以我們要將這一列替換成0或者1.

#是否入黨 data["join_party"]=data["join_party"].map(lambda x:0 if pd.isnull(x) ?else 1)

其中l(wèi)ambda是匿名函數(shù),意思是如果這一行的'join_party'這一列是控制的話則變成0,否則變成1,x可以理解成傳入的參數(shù)。

樣例2:

利用data數(shù)據(jù)集中的‘birth’這一列(每一個(gè)數(shù)據(jù)都是年份),新生成一列'birth_s',代表年代。

#出生的年代 def birth_split(x):if 1920<=x<=1930:return 0elif 1930<x<=1940:return 1elif 1940<x<=1950:return 2elif 1950<x<=1960:return 3elif 1960<x<=1970:return 4elif 1970<x<=1980:return 5elif 1980<x<=1990:return 6elif 1990<x<=2000:return 7data["birth_s"]=data["birth"].map(birth_split)

樣例3:

將收入進(jìn)行分組,新增一列‘income_cut’來代表幾個(gè)工資段:

#收入分組 def income_cut(x):if x<0:return 0elif 0<=x<1200:return 1elif 1200<x<=10000:return 2elif 10000<x<24000:return 3elif 24000<x<40000:return 4elif 40000<=x:return 5data["income_cut"]=data["income"].map(income_cut)

?

總結(jié)

以上是生活随笔為你收集整理的【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。