如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法:

  • 1) 操作整个 DataFrame 的函数:pipe()
  • 2) 操作行或者列的函数:apply()
  • 3) 操作单一元素的函数:applymap()

如何从上述函数中选择适合的函数,这取决于函数的操作对象。下面介绍了三种方法的使用。

操作整个数据表

通过给 pipe() 函数传递一个自定义函数和适当数量的参数值,从而操作 DataFrme 中的所有元素。下面示例,实现了数据表中的元素值依次加 3。

首先自定义一个函数,计算两个元素的加和,如下所示:

  1. def adder(ele1,ele2):
  2. return ele1+ele2

然后使用自定义的函数对 DataFrame 进行操作:

  1. df = pd.DataFrame(np.random.randn(4,3,columns=['c1','c2','c3'])
  2. #传入自定义函数以及要相加的数值3
  3. df.pipe(adder,3)

完整的程序,如下所示:

  1. import pandas as pd
  2. import numpy as np
  3. #自定义函数
  4. def adder(ele1,ele2):
  5. return ele1+ele2
  6. #操作DataFrame
  7. df = pd.DataFrame(np.random.randn(4,3),columns=['c1','c2','c3'])
  8. #相加前
  9. print(df)
  10. #相加后
  11. print(df.pipe(adder,3))

输出结果:

         c1        c2        c3
0  1.989075  0.932426 -0.523568
1 -1.736317  0.703575 -0.819940
2  0.657279 -0.872929  0.040841
3  0.441424  1.170723 -0.629618
         c1        c2        c3
0  4.989075  3.932426  2.476432
1  1.263683  3.703575  2.180060
2  3.657279  2.127071  3.040841
3  3.441424  4.170723  2.370382

操作行或列

如果要操作  DataFrame 的某一行或者某一列,可以使用 apply() 方法,该方法与描述性统计方法类似,都有可选参数 axis,并且默认按列操作。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  4. df.apply(np.mean)
  5. #默认按列操作,计算每一列均值
  6. print(df.apply(np.mean))

输出结果:

col1    0.277214
col2 0.716651
col3 -0.250487
dtype: float64

传递轴参 axis=1, 表示逐行进行操作,示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  4. print(df)
  5. print (df.apply(np.mean,axis=1))

输出结果:

       col1      col2      col3
0  0.210370 -0.662840 -0.281454
1 -0.875735  0.531935 -0.283924
2  1.036009 -0.958771 -1.048961
3 -1.266042 -0.257666  0.403416
4  0.496041 -1.071545  1.432817 0   -0.244641
1   -0.209242
2   -0.323908
3   -0.373431
4    0.285771
dtype: float64

求每一列中,最大值与最小值之差。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  4. print(df.apply(lambda x: x.max() - x.min()))

输出结果:

col1    3.538252
col2 2.904771
col3 2.650892
dtype: float64

操作单一元素

DataFrame 数据表结构的 applymap() 和 Series 系列结构的 map() 类似,它们都可以接受一个 Python 函数,并返回相应的值。

示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  4. #自定义函数lambda函数
  5. print(df['col1'].map(lambda x:x*100))

输出结果:

0    -18.171706
1 1.582861
2 22.398156
3 32.395690
4 -133.143543
Name: col1, dtype: float64

下面示例使用了 applymap() 函数,如下所示:

  1. import pandas as pd
  2. import numpy as np
  3. #自定义函数
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. print(df.applymap(lambda x:x*10))
  6. print(df.apply(np.mean))

输出结果:

        col1       col2       col3
0 -1.055926 7.952690 15.225932
1 9.362457 -12.230732 7.663450
2 2.910049 -2.782934 2.073905
3 -12.008132 -1.444989 5.988144
4 2.877850 6.563894 8.192513
#求均值:
col1 0.041726
col2 -0.038841
col3 0.782879
dtype: float64

pandas之使用自定义函数的更多相关文章

  1. Lesson7——Pandas 使用自定义函数

    pandas目录 简介 如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 操作整个 DataFrame 的函数:pipe() 操作行或者列的函数:apply ...

  2. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

  3. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  4. mysql 常用自定义函数解析

    -- /* -- * 用于获取一记录数据,根据传入的分隔字符delim,索引位置pos,返回相对应的value -- * SELECT Json_getKeyValue({"A": ...

  5. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  6. Sql Server系列:自定义函数

    用户自定义函数可以像系统函数一样在查询或存储过程中调用,可以接受参数.执行操作并将操作结果以值的形式返回.返回值可以是单个标量或结果集. 1. 标量函数 标量函数返回一个确定类型的标量值,对于多语句的 ...

  7. asp.net MVC helper 和自定义函数@functions小结

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  8. PHP函数之自定义函数

    像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 自定义函数 函数的 ...

  9. C语言-自定义函数

    C语言自定义函数 --1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 ...

  10. MySQL自定义函数

    用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...

随机推荐

  1. 个人PSP(四则运算)升级

    源代码管理平台Gitbee地址:https://gitee.com/chen-haijin/ 1.题目要求:能自动生成小学四则运算题目,且每一道题目的运算结果不能为负.除了支持整数运算外,还要支持真分 ...

  2. 数据库ip被锁了怎么办

    由于多次访问失败,导致ip被限制,登录时会报错 Internal error/check (Not system error) 如何解决: 找一台同事的机子,(或者修改自己的ip),然后打开sql 的 ...

  3. JMeter参数化(二)--数据库参数化

    1.下载mysql驱动,解压得到mysql-connector-java-8.0.17.jar(驱动一般放在java的 \java\jre\lib\ext 路径下): 2.在 测试计划-->浏览 ...

  4. Electron问题记录01:关于electron的notification在win10下不显示问题

    0.问题描述 在学习electron官网的notification例程时, 使用官网的代码运行时无法按照预期弹出窗口,在查询官网时发现以下解决方法. 官网解决方法:在 Windows 10 上,您的应 ...

  5. (一).JavaScript的简介,变量,数据类型,运算符和表达式

    1. JavaScript的简介 1.1 JavaScript概念 JavaScript是一门:动态的 弱类型的 解释型 的脚本语言 1. 动态: 程序执行的时候才确定数据类型 2. 弱类型:数据类型 ...

  6. jxg项目Day1-配置

    1.搭建mysql与datagrip的连接(还未完成建表学习) 2.搭好项目框架:目前划分: maven我是直接复制的之前的两个项目的依赖,但是测试的时候遇到点问题:说数据库连不上,但是我明明已经配置 ...

  7. k8s configmap 配置分离

    ConfigMap ConfigMap用于保存配置珊数据的键值对,可以用来保存单个属性,也可以用来保存配置文件.一张图解释 上图就是整个ConfigMap的生命周期以及使用方式, ConfigMap的 ...

  8. HBase启动HMaster闪退

    1.问题描述 (1)HBase启动 [Hadoop@master conf]$ start-hbase.sh SLF4J: Class path contains multiple SLF4J bin ...

  9. HTML笔记(一) HTML相关概念

    一 HTML概述 1.HTML文档基本结构 先来看一个关于HTML的例子,里面包含了几个主要的HTML标签: <!DOCTYPE html> <html> <head&g ...

  10. Ubuntu NVIDIA显卡驱动+CUDA安装(多版本共存)

    NVIDIA显卡驱动 1.禁止集成的nouveau驱动 solution 1 (recommand) # 直接移除这个驱动(备份出来) mv /lib/modules/3.0.0-12-generic ...