查看原文
其他

理解pandas中的apply和map的作用和异同

大邓 大邓和他的Python 2022-07-09
寒假工作坊

Python&Stata数据分析课寒假工作坊

现在开始招生了,有兴趣的同学和老师可以戳进来了解

课程安排 

1月9-10日  Python爬虫&文本数据分析(模块)    

1月11-16日  Stata 应用能力提升与实证前沿(模块Ⅱ)  


地点

浙江 · 杭州(浙江工商大学)


  

pandas中的数据类型

我们可以将pandas中的数据简单的认为只有下面这两种

  • 一维Series

  • 二维DataFrame

这两种数据类型都有map和apply方法

  • Series: apply和map

  • DataFrame: apply

Series.map

Series.map(arg)

  • 传入的arg : 操作函数、字典或Series

  • 返回Series

  1. import pandas as pd

  2. import numpy as np



  3. s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])

  4. print(type(s))

  5. s

  1. <class 'pandas.core.series.Series'>






  2. 0 cat

  3. 1 dog

  4. 2 NaN

  5. 3 rabbit

  6. dtype: object

  1. s.map({'cat':'kitten',

  2. 'dog':'puppy'})

  1. 0 kitten

  2. 1 puppy

  3. 2 NaN

  4. 3 NaN

  5. dtype: object

Series.apply

Series.apply(func, args, **kwds)

  • func : 函数、字典或Series

  • args: func函数的顺序参数, 元组类型

  • kwds: func函数的关键词参数,字典类型

  • 返回Series或DataFrame

  1. import pandas as pd



  2. s = pd.Series([20, 21, 12],

  3. index=['London', 'New York', 'Helsinki'])


  4. s

  1. London 20

  2. New York 21

  3. Helsinki 12

  4. dtype: int64

  1. 操作函数只有一个输入,一个输出

  1. import pandas as pd



  2. s = pd.Series([20, 21, 12],

  3. index=['London', 'New York', 'Helsinki'])




  4. def func1(x):

  5. return x**2


  6. s.apply(func1)

  1. London 400

  2. New York 441

  3. Helsinki 144

  4. dtype: int64

我们定义的操作函数,其输入和输出都是一个元素。这时候series.map和series.apply功效相同。

我们再看看操作函数输入一个,输出series(相当于多个元素)时,series的map和apply是否有区别

  1. import pandas as pd



  2. s = pd.Series([20, 21, 12],

  3. index=['London', 'New York', 'Helsinki'])




  4. def func2(x):

  5. return pd.Series([x, x])


  6. s.map(func2)

  1. London 0 20

  2. 1 20

  3. dtype: int64

  4. New York 0 21

  5. 1 21

  6. dtype: int64

  7. Helsinki 0 12

  8. 1 12

  9. dtype: int64

  10. dtype: object

  1. import pandas as pd



  2. s = pd.Series([20, 21, 12],

  3. index=['London', 'New York', 'Helsinki'])




  4. def func3(x):

  5. return pd.Series([x, x])


  6. s.apply(func3)


01
London2020
New York2121
Helsinki1212

DataFrame.apply()

apply(func, axis=0, args, kwds)

  • func: 操作函数

  • axis: 操作的方向,默认列方向axis=0。行方向操作axis=1

  • args: func的顺序参数,元组数据类型

  • kwds: func的关键词参数,字典数据类型

  1. import pandas as pd



  2. df = pd.DataFrame([[4, 9], [3, 2], [5, 7]],

  3. columns=['a', 'b'])

  4. df


ab
049
132
257
  1. def func4(row):

  2. return row[0]+row[1]



  3. df.apply(func4, axis=1)

  1. 0 13

  2. 1 5

  3. 2 12

  4. dtype: int64

  1. def func5(x):

  2. return x+1


  3. df.apply(func5, axis=1)


ab
0510
143
268
  1. df.apply(lambda x: x.max()+x.min())

  1. a 8

  2. b 11

  3. dtype: int64

  1. df.apply(lambda x: x.max()+x.min(), axis=1)

  1. 0 13

  2. 1 5

  3. 2 12

  4. dtype: int64


近期文章

精选课 | Python网络爬虫与文本数据分析(学术)

用statsmodels库做计量分析

NRC词语情绪词典和词语色彩词典

Loughran&McDonald金融文本情感分析库

股评师分析报告文本情感分析预测股价

使用分析师报告中含有的情感信息预测上市公司股价变动

【公开视频课】Python语法快速入门

【公开视频课】Python爬虫快速入门

一行pandas代码生成哑变量

使用Python读取图片中的文本数据

代码不到40行的超燃动态排序图


情绪及色彩词典获取方式,请在公众号后台回复关键词“20191218” ,

如果想做文本分析

可购买网课 | Python文本数据分析实战(学术) 

或参加Python&Stata数据分析课寒假工作坊


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存