6-Pandas使用自定义函数

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 -0.850840  0.610775 -0.505202
1  0.917392  2.161789  1.328820
2 -0.156028  0.341495  0.453001
3 -1.559997  0.417146  0.523934c1        c2        c3
0  2.149160  3.610775  2.494798
1  3.917392  5.161789  4.328820
2  2.843972  3.341495  3.453001
3  1.440003  3.417146  3.523934

操作行或列

如果要操作 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.530732
col2   -0.342875
col3   -0.084475
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.096187  0.364572  0.540722
1  1.104303  0.828945  1.934899
2 -0.729590 -0.191682 -0.034498
3 -1.417456 -1.791642 -0.684111
4 -0.308070 -1.792694  1.202829
0    0.269702
1    1.289383
2   -0.318590
3   -1.297736
4   -0.299311
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    2.030803
col2    4.066959
col3    3.299731
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   -52.406407
1    32.888598
2    -9.912873
3    88.483745
4   -35.230463
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   0.734909   4.995270  -9.110182
1  17.239229 -12.155135  -8.417007
2   9.963120  -4.794181  -0.279020
3   9.242199  -1.470281  16.901597
4 -10.010589   7.137905  -0.614954
col1    0.543377
col2   -0.125728
col3   -0.030391
dtype: float64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 教程---面向对象编程

面向对象编程 4.1 类和对象的概念类(Class)对象(Object)示例创建和使用类 4.2 类成员实例成员类成员静态成员示例 4.3 面向对象三要素封装(Encapsulation)继承(Inheritance)多态&…

单晶层状氧化物制作方法技术资料 纳离子技术

网盘 https://pan.baidu.com/s/1hjHsXvTXG74-0fDo5TtXWQ?pwd10jk 单晶型高熵普鲁士蓝正极材料及其制备方法与应用.pdf 厘米级铬氧化物单晶及其制备方法和存储器件.pdf 多孔氧化物单晶材料及其制备方法和应用.pdf 大单晶层状氧化物正极材料及其制备方法和应用.pdf 富钠P2相层状…

docker k8s

1、docker是什么? 将环境和程序一起打包给到 服务器运行的工具软件。 2、基础镜像base image是什么? 操作系统:用户空间、内核空间 阉割操作系统,利用其的用户空间(因为应用程序运行在用户空间)&#xf…

量化交易之机器学习篇 - 实现K近邻模型的两种方式

# 导入相关模块import numpy as npfrom collections import Counter import matplotlib.pyplot as pltfrom sklearn import datasets from sklearn.utils import shuffledef load_data():iris datasets.load_iris()# 打乱数据后的数据和标签X, y shuffle(iris.data, iris.tar…

【机器学习】在【Pycharm】中的应用:【线性回归模型】进行【房价预测】

专栏:机器学习笔记 pycharm专业版免费激活教程见资源,私信我给你发 python相关库的安装:pandas,numpy,matplotlib,statsmodels 1. 引言 线性回归(Linear Regression)是一种常见的统计方法和机器学习算法&a…

弹性力学讲义

弹性力学讲义 1. 基本假设和一些概念2. 应力3. 二维应力状态与摩尔库伦屈服准则 1. 基本假设和一些概念 力学:变形体力学–固体力学和流体力学(连续介质力学) 刚体力学–理论力学(一般力学) 物理受理后:要…

Facebook的投流技巧有哪些?

相信大家都知道Facebook拥有着巨大的用户群体和高转化率,在国外社交推广中的影响不言而喻。但随着Facebook广告的竞争越来越激烈,在Facebook广告上获得高投资回报率也变得越来越困难。IPIDEA代理IP今天就教大家如何在Facebook上投放广告的技巧&#xff0…

python–基础篇–正则表达式–是什么

文章目录 定义一:正则表达式就是记录文本规则的代码定义一:正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…

D : 合适的顺序

Description 给定 8 个数,如果将它们排成一列,每个数的权值是它与相邻的数之积,求一个排列方式,所有数的权值之和最大,输出该权值和. 例如 13242315 的权值和为 1∗33∗1∗22∗3∗44∗2∗22∗4∗33∗2∗11∗3∗55∗1…

新工具:轻松可视化基因组,部分功能超IGV~

本次分享一个Python基因组数据可视化工具figeno。 figeno擅长可视化三代long reads、跨区域基因组断点视图(multi-regions across genomic breakpoints)、表观组数据(HiC、ATAC-seq和ChIP-seq等)可视化、WGS中的CNV和SV可视化等。…

第四周——单词记忆

deploy 部署 attorney 律师 discrimination 歧视,区别 implicit 含蓄的 disposition 性格,倾向 entail 牵涉 retail 零售 imposing 印象深刻的 壮观的 implication 含义 entrenched 根深蒂固的 perplex 使复杂化 comply 遵守 composed 沉着…

小米平板6系列对比

小米平板6系列目前有4款,分别为6、6 Pro、6 Max、6S Pro。具体对比如下表所示。 小米平板型号66 Pro6 Max6S Pro实物图发布时间2023年4月21日2023年4月21日2023年8月14日2024年2月22 日屏幕大小11英寸11英寸14英寸12.4英寸分辨率2.8K2.8K2.8K3K刷新率144Hz144Hz120…

43 - 部门工资前三高的所有员工(高频 SQL 50 题基础版)

43 - 部门工资前三高的所有员工 # dense_rank 排名selectDepartment,Employee,Salary from(selectd.name as Department,e.name as Employee,e.salary as Salary,(dense_rank() over (partition by d.name order by e.salary desc)) as rankingfrom Employee e left join Depar…

数据库-存储过程,函数与触发器

创建存储过程:create procedure 存储过程名(参数) eg: CREATE PROCEDURE proc1() BEGIN SELECT * FROM user; END; 执行存储过程:call 存储过程名 创建带有参数的存储过程 存储过程的参数有三种: IN:输入参数,也是…

18 学渣的逆袭之路

在小学阶段(本篇特指五年级,一到四年级随便学学就可以逆袭90分,六年级难度飙升),无论你的分数怎么低,只要有一颗上进的心,就绝对可以逆袭95! 在本篇文章,我将会讲解“对于…

【前端那些事】Node.js的安装并配置镜像源

1、官网下载地址 Download Node.js 一步一步点击安装即可,可自定义安装目录 2、配置镜像源 # 设置淘宝镜像源 npm config set registry https://registry.npmmirror.com# 查看使用的镜像源 npm config get registry 如果需要恢复为npm默认的官方源&#xf…

intellij idea安装R包ggplot2报错问题求解

1、intellij idea安装R包ggplot2问题 在我上次解决图形显示问题后,发现安装ggplot2包时出现了问题,这在之前高版本中并没有出现问题, install.packages(ggplot2) ERROR: lazy loading failed for package lifecycle * removing C:/Users/V…

java:aocache的单实例缓存(一)

上一篇博客《java:aocache:基于aspectJ实现的方法缓存工具》介绍了aocache的基本使用, 介绍AoCacheable注解时说过,AoCacheable可以定义在构造方法上,定义在构造方法,该构建方法就成了单实例模式。 也就是说,只要构建…

Java实现按高度或宽度等比压缩图片尺寸

要实现一个能够按高度或宽度等比压缩图片并返回InputStream的Java方法,你需要先计算图片的原始宽高比,然后根据目标尺寸(宽度或高度)计算出等比缩放后的另一个维度。以下是一个示例代码: import javax.imageio.ImageI…

理解cpu对地址的操作

在硬件编程中,外设寄存器被映射到内存或输入/输出(I/O)的地址空间上,这种映射使得CPU能够通过读写这些地址来控制外设。这种机制通常被称为内存映射I/O(MMIO)或端口映射I/O(PMIO),其中MMIO更为常见。以GPIO(通用输入输出)为例,下面是这个过程的一般性描述: MMIO(…