我是靠谱客的博主 天真大碗,最近开发中收集的这篇文章主要介绍【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在用pandas预处理数据时,难免需要自己构造一些有价值的数据,applymap函数和map函数对于处理此类问题十分方便。

给定一个DataFrame,含有每个学生的第一次考试和第二次考试的成绩,现在让你将分数转化成ABCD和 ‘ 不及格 ’ 等级。

首先来看DataFrame中的applymap函数:数据参考自

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

 

针对Series类型数据或者是DataFrame类型数据中的某一列,使用map函数而不是applymap函数

样例1:

给定data数据集,让你对 ‘ 是否入党 ’  这一列,进行维护。原数据集里面,是年份或空值(NaN),但是我们不关心年份的多少,我们只关心是否入党,所以我们要将这一列替换成0或者1.

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

其中lambda是匿名函数,意思是如果这一行的'join_party'这一列是控制的话则变成0,否则变成1,x可以理解成传入的参数。

样例2:

利用data数据集中的‘birth’这一列(每一个数据都是年份),新生成一列'birth_s',代表年代。


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

样例3:

将收入进行分组,新增一列‘income_cut’来代表几个工资段:

#收入分组
def income_cut(x):
    if x<0:
        return 0
    elif  0<=x<1200:
        return 1
    elif  1200<x<=10000:
        return 2
    elif  10000<x<24000:
        return 3
    elif  24000<x<40000:
        return 4
    elif  40000<=x:
        return 5

data["income_cut"]=data["income"].map(income_cut)

 

最后

以上就是天真大碗为你收集整理的【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数的全部内容,希望文章能够帮你解决【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部