Pandas中map(),applymap(),apply()函数的使用方法

目录
  • 指定pandas对象作为NumPy函数的参数
    • 元素的应用
    • 行/列的应用
    • pandas.DataFrame,pandas.Series方法
  • Pandas对象方法的函数应用
  • 适用于Series的每个元素:map(),apply()
    • 应用于DataFrame的每个元素:applymap()
    • 应用于DataFrame的每行和每列:apply()
    • 应用于DataFrame的特定行/列元素

将函数应用于pandas对象(pandas.DataFrame,pandas.Series)时,根据所应用的函数类型以及是否将其应用于元素,行或列,使用的方法会有所不同。

指定pandas对象作为NumPy函数的参数

  • 将Pandas对象指定为函数参数
  • 是否将其应用于元素,行或列取决于函数的类型和参数的设置而有所不同
  • Pandas对象中的一些方法

Pandas对象方法的函数应用
元素功能(标量值)

  • 适用于Series的每个元素:map(),apply()
  • 应用于DataFrame的每个元素:applymap()

行和列的功能(一维数组)

  • 应用于DataFrame的每行和每列:apply()

用以下csv文件作为示例进行说明。

a,b,c,d
11,12,13,14
21,22,23,24
31,32,33,34

import pandas as pd
import numpy as np

df = pd.read_csv('./data/06/sample_header.csv')
print(df)
#     a   b   c   d
# 0  11  12  13  14
# 1  21  22  23  24
# 2  31  32  33  34

指定pandas对象作为NumPy函数的参数

可以将Pandas对象指定为NumPy函数的参数。

元素的应用

NumPy的通用函数(ufunc:应用于数组元素的函数)适用于pandas对象的每个元素。

绝对值(fabs()),平方根(sqrt()),log(log())等。

print(np.sqrt(df))
#           a         b         c         d
# 0  3.316625  3.464102  3.605551  3.741657
# 1  4.582576  4.690416  4.795832  4.898979
# 2  5.567764  5.656854  5.744563  5.830952

行/列的应用

如果将pandas对象指定为从NumPy数组的所有元素计算值的函数的参数,则默认情况下它将应用于pandas对象的每列。如果参数轴= 1,则将其应用于每行。

最大值(amax()),最小值(amin()),平均值(mean())等。

print(np.amax(df))
# a    31
# b    32
# c    33
# d    34
# dtype: int64

print(np.mean(df, axis=1))
# 0    12.5
# 1    22.5
# 2    32.5
# dtype: float64

pandas.DataFrame,pandas.Series方法

最大值,最小值,平均值,方差等也被准备为Pandas对象的方法,因此也可以直接使用它们。

同样,在这种情况下,默认情况下也会将其应用于每一列,并且如果参数axis = 1,则会将其应用于每一行。

print(df.max())
# a    31
# b    32
# c    33
# d    34
# dtype: int64

print(df.max(axis=1))
# 0    14
# 1    24
# 2    34
# dtype: int64

Pandas对象方法的函数应用

可以使用pandas对象方法将函数应用于元素,行和列。您可以应用Python内置函数或您定义的函数。

  • 应用于Series的每个元素:map(),apply()
  • 应用于DataFrame的每个元素:applymap()
  • 应用于DataFrame的每行和每列:apply()
  • 应用于DataFrame的特定行/列元素

以上方法都返回一个新的已处理的对象,而原始对象则保持不变。没有像dropna()或fillna()那样的参数,因此,如果想更改原始对象本身时,

df = df.applymap(function)

如上,用原始对象替换新对象并覆盖它。

适用于Series的每个元素:map(),apply()

将Python内置函数,匿名函数(lambda)或def定义的函数传递给map()或apply()的参数。

s = df['a']
print(s)
# 0    11
# 1    21
# 2    31
# Name: a, dtype: int64

f_brackets = lambda x: '[{}]'.format(x)
print(s.map(f_brackets))
# 0    [11]
# 1    [21]
# 2    [31]
# Name: a, dtype: object

def f_str(x):
    return str(x).replace('1', 'One').replace('2', 'Two').replace('3', 'Three').replace('4', 'Four')

print(s.map(f_str))
# 0      OneOne
# 1      TwoOne
# 2    ThreeOne
# Name: a, dtype: object

对于map(),如果将字典dict指定为参数,它将替换为元素。

应用于DataFrame的每个元素:applymap()

将Python的内置函数,匿名函数(lambda)或def定义的函数传递为applymap()的参数。

f_oddeven = lambda x: 'odd' if x % 2 == 1 else 'even'
print(df.applymap(f_oddeven))
#      a     b    c     d
# 0  odd  even  odd  even
# 1  odd  even  odd  even
# 2  odd  even  odd  even

应用于DataFrame的每行和每列:apply()

将适用于一维数组的函数传递给apply()的参数。默认情况下,它应用于每列,如果axis = 1,则应用于每行。

f_maxmin = lambda x: max(x) - min(x)
print(df.apply(f_maxmin))
# a    20
# b    20
# c    20
# d    20
# dtype: int64

print(df.apply(f_maxmin, axis=1))
# 0    3
# 1    3
# 2    3
# dtype: int64

应用于DataFrame的特定行/列元素

由于没有方法仅将功能应用于DataFrame的特定行/列元素,可执行以下方法。

  • 选择行/列并应用带有map()或apply()的功能
  • 覆盖原始行/列
df['b'] = df['b'].map(f_str)
print(df)
#     a         b   c   d
# 0  11    OneTwo  13  14
# 1  21    TwoTwo  23  24
# 2  31  ThreeTwo  33  34

df.iloc[2] = df.iloc[2].map(f_str)
print(df)
#           a         b           c          d
# 0        11    OneTwo          13         14
# 1        21    TwoTwo          23         24
# 2  ThreeOne  ThreeTwo  ThreeThree  ThreeFour

到此这篇关于Pandas中map(),applymap(),apply()函数的使用方法的文章就介绍到这了,更多相关Pandas map(),applymap(),apply()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pandas map(),apply(),applymap()区别解析

    基础 以下操作基于python 3.6 windows 10 环境下 通过 将通过实例来演示三者的区别 toward_dict = {1: '东', 2: '南', 3: '西', 4: '北'} df = pd.DataFrame({'house' : list('AABCEFG'), 'price' : [100, 90, '', 50, 120, 150, 200], 'toward' : ['1','1','2','3','','3','2']}) df map()方法 通过df.(ta

  • Pandas中map(),applymap(),apply()函数的使用方法

    目录 指定pandas对象作为NumPy函数的参数 元素的应用 行/列的应用 pandas.DataFrame,pandas.Series方法 Pandas对象方法的函数应用 适用于Series的每个元素:map(),apply() 应用于DataFrame的每个元素:applymap() 应用于DataFrame的每行和每列:apply() 应用于DataFrame的特定行/列元素 将函数应用于pandas对象(pandas.DataFrame,pandas.Series)时,根据所应用的函数

  • 浅谈Pandas中map, applymap and apply的区别

    1.apply() 当想让方程作用在一维的向量上时,可以使用apply来完成,如下所示 In [116]: frame = DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon']) In [117]: frame Out[117]: b d e Utah -0.029638 1.081563 1.280300 Ohio 0.647747 0.831136 -1.

  • JS中call和apply函数用法实例分析

    本文实例讲述了JS中call和apply函数用法.分享给大家供大家参考,具体如下: call 函数 语法 obj.call(thisObj,arg[,arg2[,arg3[,...agr]]]); 简介 thisObj继承obj的属性和方法(obj原型链上的属性和方法不能被继承),后面的参数会当成obj的参数安装顺序传递进去. 示例 function animal(type,nickname){ this.type = type; this.nickname = nickname; this.s

  • 详解pandas中缺失数据处理的函数

    目录 一.缺失值类型 1.np.nan 2.None 3.NA标量 二.缺失值判断 1.对整个dataframe判断缺失 2.对某个列判断缺失 三.缺失值统计 1.列缺失 2.行缺失 3.缺失率 四.缺失值筛选 五.缺失值填充 六.缺失值删除 1.全部直接删除 2.行缺失删除 3.列缺失删除 4.按缺失率删除 七.缺失值参与计算 1.加法 2.累加 3.计数 4.聚合分组 五.源码 今天分享一篇pandas缺失值处理的操作指南! 一.缺失值类型 在pandas中,缺失数据显示为NaN.缺失值有3

  • Python Pandas中loc和iloc函数的基本用法示例

    目录 1 loc和iloc的含义 2 用法 2.1 loc函数的用法 2.2 iloc函数的用法 补充:Pandas中loc和iloc函数实例 总结 1 loc和iloc的含义 loc表示location的意思:iloc中的loc意思相同,前面的i表示integer,所以它只接受整数作为参数. 2 用法 import pandas as pd import numpy as np # np.random.randn(5, 2)表示返回5x2的矩阵,index表示行的编号,columns表示列的编

  • Pandas中把dataframe转成array的方法

    使用 df=df.values, 可以把Pandas中的dataframe转成numpy中的array 以上这篇Pandas中把dataframe转成array的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: pandas把dataframe转成Series,改变列中值的类型方法 pandas string转dataframe的方法 pandas.DataFrame 根据条件新建列并赋值的方法 python pandas中DataFram

  • python中根据字符串调用函数的实现方法

    在python中可以根据字符串来调用函数: 1.使用getattr从字符串来调用函数 在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一个已经存在的函数呢,主要就是使用到getattr函数的作用,这个函数就是在使用字符串得到这个字符串对应的函数的对象,然后就可以进行执行,如下所示: 在模块中,存在两个函数: [root@python 530]# cat attr.py #!/usr/bin/env python def kel(): print 'this is a kel functi

  • Python中在脚本中引用其他文件函数的实现方法

    在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法, 1. 将文件所在位置添加到sys.path中 import sys sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/a

  • JavaScript在网页中画圆的函数arc使用方法

    一.arc所需要的参数设置 复制代码 代码如下: arc(x, y, radius, startAngle, endAngle, counterclockwise); 其中x,y,radius都很容易理解,那么重点说说startAngle,endAngle和counterclockwise三个参数! 二.arc参数详解 1,startAngle和endAngle分别指圆开始的角度和结束的角度,手册上面说的是开始的角度为0,结束的角度为Math.PI*2,这样正好画一个圆 2,下面通过实例来讲解s

  • 使用pandas中的DataFrame数据绘制柱状图的方法

    折线图是数据分析的一种手段,但是有时候我们也需要柱状图进行不同数据的可视化量化对比.使用pandas的DataFrame方法进行柱状图的绘制也是比较方便的. 把之前的折线图绘制代码修改一下如下: from pandas import Series,DataFrame from numpy.random import randn import numpy as np import matplotlib.pyplot as plt df = DataFrame(abs(randn(10,5)),co

随机推荐