pandas中map,apply和applymap的用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了pandas中map,apply和applymap的用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2159字,纯文字阅读大概需要4分钟。
内容图文
![pandas中map,apply和applymap的用法](/upload/InfoBanner/zyjiaocheng/1021/4b9f966cb63941a0a6ec0096c90ae5f1.jpg)
1.map
用于series的一种方法,用于替换掉series中的数值,或者新增一列对应到series的数值
首先建立一个dataframe
import pandas as pd
import numpy as np
music_genre=['hiphop','jazz','pop','funk','rock','classical','r&b','electronic']
city=['广州市','厦门市','深圳市','西安市','武汉市','上海市','成都市','郑州市','重庆市','北京市','天津市']
data=pd.DataFrame({
'gender': [ x for x in np.random.randint(0,2,100)],
'age':np.random.randint(20,80,100),
'city':[city[i] for i in np.random.randint(len(city),size=100)],
'music_genre':[music_genre[x] for x in np.random.randint(len(music_genre),size=100)] })
data
map用于当我们要对Series的每一个数据进行操作时,当对Series中的数据分类处理时候非常方便
此案例中我们可以使用map方法可以新增一列"gender_in_chinese”,对应到原表的gender,0对应女,1对应男,使用字典的方法对应
data['gender_in_Chinese']=data.gender.map({1:'男',0:'女'})
和下面代码等价
def gt(x):
if x==1:
x='男'
else:
x='女'
return x
data['gender_in_Chinese']=data.gender.map(gt)
或者
data['gender_in_Chinese']=data.gender.map(lambda x:'男' if x==1 else '女')
2. apply的用法
2.1用于series
可以对指定列调用函数,可以是简单函数,也可以是自定义的复杂函数,
例如:将data的city列舍弃最后一个字符“市”,只保留前两个字
def cut(str):
return str[:2]
data.city=data.city.apply(cut)
data
另外,apply内的函数可以传入多个参数,假设我们现在需要把age这一列划分为几个区间,20-某个年龄是青年,某个年龄到60属于中年,60-80是老年,那么此时需要两个参数,一个是Series的age,另一个是介于青年和中年的年龄
def age_range(age,x):
if age>20&age<x:
age_range='青年'
elif age<60:
age_range='中年'
else:
age_range='老年'
return age_range
data['age_range']=data.age.apply(age_range,args=(-3,))
结果如下:
2.2 用于dataframe
(1)对每行或者每列起作用,可求每行的和/最大值/平均值等,也可以是其他自定义的函数
例如下面这个DataFrame
我们可以对它求每列的和
求每列的最大值减去最小值
求每列的正数之和
(2)以data为例,apply可以和groupby结合 求出每种性别分类下年龄最大的人
data.groupby('gender')['age'].apply(max)
3.applymap
用于DataFrame,对每个element起作用,常用于数字格式化
例如有这样一个DataFrame,用applymap的方法把数字统一保留两位小数
df.applymap(lambda x:'{:.2f}'.format(x))
或者
df.applymap(lambda x:"%.2f" % x)
结果
内容总结
以上是互联网集市为您收集整理的pandas中map,apply和applymap的用法全部内容,希望文章能够帮你解决pandas中map,apply和applymap的用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。