pandas之使用自定义函数
如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法:
- 1) 操作整个 DataFrame 的函数:pipe()
- 2) 操作行或者列的函数:apply()
- 3) 操作单一元素的函数:applymap()
如何从上述函数中选择适合的函数,这取决于函数的操作对象。下面介绍了三种方法的使用。
操作整个数据表
通过给 pipe() 函数传递一个自定义函数和适当数量的参数值,从而操作 DataFrme 中的所有元素。下面示例,实现了数据表中的元素值依次加 3。
首先自定义一个函数,计算两个元素的加和,如下所示:
- def adder(ele1,ele2):
- return ele1+ele2
然后使用自定义的函数对 DataFrame 进行操作:
- df = pd.DataFrame(np.random.randn(4,3,columns=['c1','c2','c3'])
- #传入自定义函数以及要相加的数值3
- df.pipe(adder,3)
完整的程序,如下所示:
- import pandas as pd
- import numpy as np
- #自定义函数
- def adder(ele1,ele2):
- return ele1+ele2
- #操作DataFrame
- df = pd.DataFrame(np.random.randn(4,3),columns=['c1','c2','c3'])
- #相加前
- print(df)
- #相加后
- 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,并且默认按列操作。示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
- df.apply(np.mean)
- #默认按列操作,计算每一列均值
- print(df.apply(np.mean))
输出结果:
col1 0.277214
col2 0.716651
col3 -0.250487
dtype: float64
传递轴参 axis=1, 表示逐行进行操作,示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
- print(df)
- 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
求每一列中,最大值与最小值之差。示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
- 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 函数,并返回相应的值。
示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
- #自定义函数lambda函数
- 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() 函数,如下所示:
- import pandas as pd
- import numpy as np
- #自定义函数
- df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
- print(df.applymap(lambda x:x*10))
- 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之使用自定义函数的更多相关文章
- Lesson7——Pandas 使用自定义函数
pandas目录 简介 如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 操作整个 DataFrame 的函数:pipe() 操作行或者列的函数:apply ...
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数
10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...
- mysql 常用自定义函数解析
-- /* -- * 用于获取一记录数据,根据传入的分隔字符delim,索引位置pos,返回相对应的value -- * SELECT Json_getKeyValue({"A": ...
- mysql 自定义函数
原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...
- Sql Server系列:自定义函数
用户自定义函数可以像系统函数一样在查询或存储过程中调用,可以接受参数.执行操作并将操作结果以值的形式返回.返回值可以是单个标量或结果集. 1. 标量函数 标量函数返回一个确定类型的标量值,对于多语句的 ...
- asp.net MVC helper 和自定义函数@functions小结
asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...
- PHP函数之自定义函数
像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 自定义函数 函数的 ...
- C语言-自定义函数
C语言自定义函数 --1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 ...
- MySQL自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...
随机推荐
- https://计算机四级
计算机四级内容: 一,网络工程师 基本要求 1.了解大型网络系统规划.管理方法: 2.具备中小型网络系统规划.设计的基本能力: 3.掌握中小型网络系统组建.设备配置调试的基本技术: 4.掌握企事业单位 ...
- 在 Rime 上对输入法进行定制
Rime Rime是什么?忘了!但是在用.而且很好用. 了解Rime历史,还是去官网吧! 定制 Rime有两个目录: 1. 程序目录 2. 用户目录 Rime 的程序目录 Windows 上 要看你安 ...
- vue中自动将px转换成rem
1.首先下载 lib-flexible npm install lib-flexible --save 2.在main.js中引用 lib-flexible 3.安装px2rem-loader(将px ...
- Python抓取数据具体流程
之前看了一段有关爬虫的网课深有启发,于是自己也尝试着如如何过去爬虫百科"python"词条等相关页面的整个过程记录下来,方便后期其他人一起来学习. 抓取策略 确定目标:重要的是先确 ...
- CSS 选择器-认识并应用选择器
在内嵌式和外部css中,要想将CSS样式应用于特定的HTML元素,首先需要找到该目标元素,这时需要用到CSS中的选择器. 选择器:选择要添加样式的 HTML 标签的一种方法.模式. 首先学习 css2 ...
- STL二分查找算法
二分法检索又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功:否则,若key ...
- 在LaTeX中使用BibTeX时的一个问题及其解决:编译PDF不随bib文件更新
问题:更新bib文件之后,编译tex文件输出的PDF文件没有相应的更新. 原理: bbl文件才是引文的信息,bib文件只是用于生成bbl文件的一个"数据集"而已. 一般来说,LaT ...
- 10.14 2020 实验 7:OpenDaylight 实验——Python 中的 REST API 调用
一.实验目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. 二.实验任务 本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序 ...
- 2020/03/24 HTML基础复习笔记
2020-03-24 15:49:30 下午好! 这是我开通博客的第二天也是在钉钉上网课的又一天,为了应对考试现在复习到了HTML基础知识,本打算用VS敲想了想还是用了XMind(真的好用!!!)文件 ...
- white-space: pre-line;的坑
html模版解析换行 这是字符串 跟标签设置white-space: pre-line: pre兼容ie8,pre-line不兼容ie 6-7 这行文字开头是没有空格的但是还是有很大的空格,代码方法截 ...