pandas计算填值,函数映射,排序和运算汇总

ops/2024/9/18 12:05:30/ 标签: pandas, 数据分析

目录

01算数函数和计算填值

02函数和映射

1.函数和映射-map

2. 函数和映射-apply,applymap

pandas%E6%8E%92%E5%BA%8F-toc" style="margin-left:0px;">04 pandas排序

05 描述性统计信息函数


01算数函数和计算填值


| 方法     | 说明                  |
| add      | 加  +                 |
| sub      | 减  -                 |
| mul      | 乘  *                 |
| div        | 除  /                 |
| floordiv | 整除  //              |
| pow      | 幂运算(平方计算) ** |

import numpy as np
import pandas as pddata1 = np.random.randint(1,10,(5,2))
data2 = np.random.randint(1,10,(6,2))# 创建了两个dataframe对象
df1 = pd.DataFrame(data1,columns=['data1','data2'])
df2 = pd.DataFrame(data2,columns=['data1','data2'])
print(df1)
print(df2)print('\n')
# 需求:让df1中data1和df2中data2这两列进行相加
# print(df1['data1'] + df2['data2'])# add方法,进行相加
# fill_value 在缺失的地方给定一个值,让其能够正常运算
print(df1['data1'].add(df2['data2'], fill_value=0))# 减
print(df1['data1'].sub(df2['data2'], fill_value=0))# 乘
print(df1.mul(df2,fill_value=1))# 除
print(df1.div(df2,fill_value=1))# 整除
print(df1.floordiv(df2,fill_value=1))# 平方运算
print(df1.pow(df2,fill_value=1))
# 针对对应的元素进行运算,如果只有一方有值,另一个没有,就会出现Nan(缺失值)  -->fill_value

02函数和映射

| 方法            | 说明                                                         |
| map()          | 基于series使用,输入使用字典或者函数(匿名函数)进行数值的修改 |
| apply()         | 基于series和DataFrame使用,输入函数名和参数进行传入, dataframe多出axis=1/0 控制行列 |
| applymap() | 基于DataFrame使用,对DataFrame中每个单元格执行指定函数的操作 |

1.函数和映射-map

import pandas as pd# 创建dataframe对象
df1 = pd.DataFrame({'A': ['张三', '李四', '王五'],'B': [20, 25, 33],'C': ['T', 'N', 'T']})
print(df1)# 需求:将c这列中N换成0,T为1
# 1、以字典形式映射修改
df1['C'] = df1['C'].map({'N':0,'T':1})
print(df1)# 2、利用函数修改
def func(values):if values == 'N':return 0else:return 1df2 = pd.DataFrame({'A': ['张三', '李四', '王五'],'B': [20, 25, 33],'C': ['T', 'N', 'T']})
# 函数,调用参数为函数名
df2['C'] = df2['C'].map(func)
print(df2)# 3、匿名函数
df3 = pd.DataFrame({'A': ['张三', '李四', '王五'],'B': [20, 25, 33],'C': ['T', 'N', 'T']})
df3['C'] = df3['C'].map(lambda v:1 if v=='T' else 0)
print(df3)

2. 函数和映射-apply,applymap

import numpy as np
import pandas as pd# apply()
# series
df = pd.DataFrame(np.random.random((4,3)),columns=list('abc'))
print(df)# 需求:a列中所有的值各加上10
def func(values,x):return values+xdf['a'] = df['a'].apply(func,args=(10,))
print(df)# dataframe  需要去控制添加、计算、判断 的行和列
# 要求:对比b,c两列,求每行的最大值
print(df[['b', 'c']].apply(np.max,axis=1))
# 求每一列的最大值
print(df[['b', 'c']].apply(np.max,axis=0))# 需求:使用所有的数据,每一行使用最大值减去最小值
print('\n')
print(df.apply(lambda x: x.max() - x.min(), axis=1))def func1(x):return x.max()-x.min()print(df.apply(func1, axis=1))
# map方法是针对series进行操作,apply方法要要么是针对行 针对列# applymap dataframe使用  对每一个元素进行操作
df1 = pd.DataFrame(np.random.random((4,3)),columns=list('abc'))
print('\n')
print(df1)# 需求:将每一个元素进行保留3位小数
print(df1.applymap(lambda x: round(x, 3)))

pandas%E6%8E%92%E5%BA%8F">04 pandas排序

| 参数          | 说明   |
| ascending | 值为True按升序排序,值为False按降序排序 |
| inplace      | 是否在原数据改变                        |
| by              | DataFrame中选中某一列进行排序           |

import numpy as np
import pandas as pddf = pd.DataFrame({'a': [3, 9, 4, 5],'b': [4, 7, 3, 6]
}, index=list('cdba'))
print(df)# 针对行索引值进行排序
print(df.sort_index(ascending=False))# 根据实际值排序(一般是针对一列)
# 根据b列进行排序
print(df.loc[:, 'b'].sort_values())# 根据b这一列进行排序,别的也会连带着进行排序
print(df.sort_values(by='b'))# 降序
print(df.sort_values(by='b',ascending=False))# inplace  是否将原数据改变
print('\n')
df.sort_values(by='a',inplace=True)
print(df)

05 描述性统计信息函数

| 函数       | 描述               |
| count()    | 计算非空元素的数量 |
| sum()      | 所有值之和         |
| mean()     | 所有值的平均值     |
| median()  | 所有值的中位数     |
| std()        | 值的标准差         |
| min()       | 最小值             |
| max()      | 最大值             |
| abs()      | 绝对值             |
| prod()     | 数组元素的乘积     |
| cumsum()  | 累计总和           |
| cumprod() | 累计乘积           |
 

import numpy as np
import pandas as pddata = {'name':pd.Series(['张三', '李四', '王五']),'age':pd.Series([23, 30, 26]),'math':pd.Series([60, 80, 95]),'chinese':pd.Series([80, 75, 70]),'english':pd.Series([59, 65, 60])
}
df = pd.DataFrame(data)
print(df)# 所有的统计方法,都可以控制行和列 axis=0/1
# count:统计非空元素的数量
print(df.count(axis=0))
print(df.count(axis=1))# 求出三名同学各科的总分
print(df[['math', 'chinese', 'english']].sum(axis=1))
# 将结果新增一列打印
df['total'] = df[['math', 'chinese', 'english']].sum(axis=1)
print(df)# 三科平均值
df['avg'] = df[['math', 'chinese', 'english']].mean(axis=1)
print(df)# 获取英语成绩的中位数
print(df['english'].median())# 三科的标准差
print(df[['math', 'chinese', 'english']].std(axis=1))# 各科的最大值和最小值
print('\n')
print(df[['math', 'chinese', 'english']].max(axis=0))
print(df[['math', 'chinese', 'english']].min(axis=0))print('\n')
# 绝对值
df1 = pd.DataFrame(np.random.randn(3,5))
print(df1)
print(df1.abs())  # abs(df1)# 计算每一行/列的乘积
df2 = pd.DataFrame(np.random.randint(1,10,(3,5)))
print(df2)
print('\n')
print(df2.prod())  # 默认列
print(df2.prod(axis=1))  # 行print(df2[1])
print(df2[1].cumsum())  # 元素累加
print(df2[1].cumprod())   # 元素累乘

http://www.ppmy.cn/ops/108779.html

相关文章

惊!还有这种邮件群发神器!?

邮件群发工具是推广营销的重要利器。这种软件具备强大的功能,能够批量发送邮件,确保所发送的邮件不易被标记为垃圾邮件。同时,它还包括自动地址采集和整理功能,能够快速获取邮箱地址,省去了寻找地址的麻烦。 功能亮点&…

线程中的各种锁的一些补充(面试)

死锁,共享锁,公平锁,乐观锁等(前篇) 可中断锁和不可中断锁 可中断锁:线程申请该锁之后,即便没有得到该锁,也可以进行其他逻辑处理。ReentrantLock 就属于是可中断锁。不可中断锁&a…

jmeter多线程批量插入数据

文章目录 业务场景解决方案1、type来源于csv文件2、code进行随机编码3、name通过计数器按顺序编码 最终效果 业务场景 针对某一个POST保存数据的请求接口&#xff0c;如下 public ApiResultDto<?> add(RequestBody PropertyDto req) {return propertyService.add(req)…

零基础国产GD32单片机编程入门(十三)单片机IAP(在应用编程)详解及实战源码

文章目录 一.概要二.GD32F103C8T6单片机IAP介绍1.GD32F103C8T6单片机IAP基本原理2.GD32F103C8T6单片机IAP基本流程 三.配置一个BOOT工程四.配置一个APP工程五.工程源代码下载六.小结 一.概要 GD32单片机程序升级方法有很多种&#xff0c;主要有以下几种&#xff1a; 1.将编译…

postgres--系统视图,表

pg_stat_all_tables 累积统计系统-监控数据库活动 pg_stat_all_tables是一个系统视图&#xff0c;它为当前数据库中的每个表&#xff08;包括TOAST表&#xff09;提供一行数据。显示了关于特定表的访问统计信息&#xff0c;比如访问次数等。pg_stat_user_tables和pg_stat_sys_…

HTML5全面知识点

HTML&#xff08;HyperText Markup Language&#xff09;是构建网页的基础语言。以下是全面的 HTML 知识点&#xff1a; 一、HTML 基础概念 定义&#xff1a;HTML 是一种用于描述网页结构的标记语言&#xff0c;通过各种标签来定义网页的内容和布局。 版本历史&#xff1a;从 …

HBase 源码阅读(一)

1. HMaster main方法 在上文中Macos M1 IDEA本地调试 HBase 2.2.2&#xff0c;我们使用HMaster的主函数 使用"start"作为入参&#xff0c;启动了HMaster进程 这里我们再深入了解下HMaster的运行机理 public static void main(String [] args) {LOG.info("STAR…

前端---对MVC MVP MVVM的理解

就需要从前端这些年的从无到有、从有到优的变迁过程讲一下。 1. Web1.0时代 在web1.0时代并没有前端的概念&#xff0c;开发一个web应用多数采用ASP.NET/Java/PHP编写&#xff0c;项目通常用多个aspx/jsp/php文件构成&#xff0c;每个文件中同时包含了HTML、CSS、JavaScript、…

漫谈设计模式 [13]:命令模式

引导性开场 菜鸟&#xff1a;老鸟&#xff0c;我最近在做一个项目&#xff0c;需要实现一些复杂的操作&#xff0c;比如撤销、重做功能&#xff0c;感觉代码越来越混乱了。你能不能帮我看看有没有什么好的设计模式可以用&#xff1f; 老鸟&#xff1a;嗯&#xff0c;听起来你…

分布式项目中使用雪花算法提前获取对象主键ID

hello&#xff0c;大家好&#xff0c;我是灰小猿&#xff01; 在做分布式项目开发进行数据表结构设计时&#xff0c;有时候为了提高查询性能&#xff0c;在进行数据库表设计时&#xff0c;会使用自增ID来代替UUID作为数据的主键ID&#xff0c;但是这样就会有一个问题&#xff…

数据库类型有哪些?

根据存储方式的不同&#xff0c;数据库可以分为不同种类。每种类型的数据库&#xff0c;都有各自使用场景以及不同的产品。 ​ 关系型数据库 关系型数据库&#xff08;RDBMS&#xff09;基于关系模型&#xff0c;通过表&#xff08;Table&#xff09;的形式来组织数据&#xf…

数据结构中抽象数据类型如何实现?

抽象数据类型可以通过固有的数据类型&#xff08;如整形&#xff0c;实型&#xff0c;字符型等&#xff09;来表示和实现。 即利用处理器中已存在的数据类型来说明新的结构&#xff0c;用已经实现的操作来组合新的操作。 用类c语言&#xff08;介于伪码和c语言之间&#xff0…

mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析

mfc140u.dll是 Microsoft Foundation Class (MFC) 库的一部分&#xff0c;通常与 Visual Studio 2015 及其后续版本相关联。如果系统中缺少 mfc140u.dll&#xff0c;可能会导致依赖该库的应用程序无法启动&#xff0c;并显示错误消息&#xff0c;如“程序无法启动&#xff0c;因…

【教程】MySQL数据库学习笔记(六)——数据查询语言DQL(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

【数据结构-二维前缀和】力扣221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”…

RocketMQ搭建集群监控平台

一、概述 RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals&#xff0c;这个项目中有一个子模块叫rocketmq-console&#xff0c;这个便是管理控制台项目了&#xff0c;先将incubator-rocketmq-externals拉到本地&#xff0c;因为我们需要自己对rocketmq-console…

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6&#xff1a;深入图形与图形分组、自定义节点、节点动画&#xff08;下&#xff09;_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中&#xff0c;应该怎样去计算和绘制图形&#xff0c;如何给一个图形制作不间断的动画&#xff0c;以及在鼠…

Mysql基础练习题 1757.可回收且低脂的产品(力扣)

编写解决方案找出既是低脂又是可回收的产品编号。 题目链接&#xff1a; https://leetcode.cn/problems/recyclable-and-low-fat-products/description/ 建表插入数据&#xff1a; Create table If Not Exists Products (product_id int, low_fats ENUM(Y, N), recyclable …

基于java+SpringBoot+Vue的甘肃非物质文化网站设计与实现

基于javaSpringBootVue的甘肃非物质文化网站设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 页面展示 前台展示模块为用户提供了甘肃非物质文化遗产的浏览功能&#xff0c;用户可以查看各类非物质文化遗产的详细介…

【python】中秋主题案例程序

mid_autumn1.py # 中秋节主题案例程序def 中秋节祝福():print("在这个月圆人团圆的日子里,祝愿大家中秋节快乐!")def 月饼选择():mooncakes = {1: "五仁月饼,口感丰富,美味可口!",2: "豆沙月饼,甜而不腻,深受喜爱!",3: "莲蓉月饼,…